用正则匹配括号内的数据,这个较容易实现,但是匹配括号外的数据,貌似就比较困难了.例如:
"{controller}/cc/{action}/{id}"
我想得到/cc/,/ 这两个括号外的数据.
如果是匹配括号内的数据(包括括号),这个可以用这段正则实现
/{[^}]+}/
测试代码(javascript实现):
"{controller}/cc/{action}/{id}".replace(/{[^}]+}/ g,'-')
但是提取括号外的内容,困难得很啊.不知道哪位可以实现这个需求?
几个特殊的字符串:
"{controller}/cc/{action}/{id}}" 匹配到空字符串
"{controller}}/cc/{action}/{id}" 匹配到:}/cc/, /
正则分组,这个很久没做了,你搜一下
你把那个匹配括号内的睁着的前后两个大括号调换位置不就可以了么??/}[^{]+{/
这个匹配是有问题的,比如这个要求就不满足
"{controller}/cc/{action}/{id}}" 匹配到空字符串
var reg=new RegExp("(\{[^}]+\})(/[^/{}]*/?)?","g"); var str="controller}/cc/{action}/{id}"; while(reg.exec(str)){ RegExp.$1;// {controller},{action} RegExp.$2;// /cc/,/ }
([^}]+?(?=[{])|(?<=[}])[^{]+)
已测试通过,
?<=这种匹配貌似javascript不支持