我整天都在试图弄清楚如何制定一个看似棘手的正则表达式。我们走了:
NAME=JOHN,SMITH
我想选择“JOHN”和“SMITH”(不是逗号或等号)
换句话说,我希望表达式在等号后选择LETTERS(不包括等号本身),无论字母/单词是否用逗号分隔。我恐怕无法改变格式。
感谢。我正在使用JavaScript btw。
编辑:这是我到目前为止设法汇总的内容。/=(\D[^=\n,]+)/g
但是,这仍然会选择等号,并且不会添加逗号后可能出现的任何其他字词。
答案 0 :(得分:3)
我想选择" JOHN"和" SMITH"
使用此:
'NAME=JOHN,SMITH'.match(/\=(\w+),?(\w+)/)
结果将出现在数组的 second 和 third 索引中:
["=JOHN,SMITH", "JOHN", "SMITH"]
答案 1 :(得分:0)
您可以这样做:
/\w+(?!.*=)/g
这将做一个负向前瞻,这意味着你想要一个单词:\ w +不是在任意数量的字符加上一个=符号之前。
然后全局会给你多个匹配,不包括逗号。我相信这就是你要找的东西?你没有赢得任何比赛组,但是我不相信你需要的任何你到目前为止所说的。
答案 2 :(得分:0)
这会吗?
var str = 'NAME=JOHN,SMITH';
str = str.replace(/NAME\=([A-Z]+?)\,([A-Z]+?)/g,'$1 $2');
alert(str);
答案 3 :(得分:0)
这个正则表达式应该为你做
/(.+?(?==))|([^,?=?]+)/g
第一部分(.+?(?==))
使用positive lookahead搜索=
字符。它基本上在=
字符
第二部分([^,?=?]+)
将所有不是,
或=
的内容分组,因此它会对搜索字符串的其他两个组成部分进行分组。告诉我这是否适合你:)
如果您不想使用NAME
部分,则只需使用/(\w+(?!.*=))/g
。
如果您不希望将其分组,则可以删除为您提供/.+?(?==)|[^,?=?]+/g
和/\w+(?!.*=)/g
的括号。
您可以测试正则表达式here