Javascript REGEX - 棘手的表达

时间:2015-06-17 16:06:18

标签: javascript regex

我整天都在试图弄清楚如何制定一个看似棘手的正则表达式。我们走了:

NAME=JOHN,SMITH

我想选择“JOHN”和“SMITH”(不是逗号或等号)

换句话说,我希望表达式在等号后选择LETTERS(不包括等号本身),无论字母/单词是否用逗号分隔。我恐怕无法改变格式。

感谢。我正在使用JavaScript btw。

编辑:这是我到目前为止设法汇总的内容。 /=(\D[^=\n,]+)/g但是,这仍然会选择等号,并且不会添加逗号后可能出现的任何其他字词。

4 个答案:

答案 0 :(得分:3)

  

我想选择" JOHN"和" SMITH"

使用此:

'NAME=JOHN,SMITH'.match(/\=(\w+),?(\w+)/)

结果将出现在数组的 second third 索引中:

["=JOHN,SMITH", "JOHN", "SMITH"]

答案 1 :(得分:0)

您可以这样做:

/\w+(?!.*=)/g

这将做一个负向前瞻,这意味着你想要一个单词:\ w +不是在任意数量的字符加上一个=符号之前。

然后全局会给你多个匹配,不包括逗号。我相信这就是你要找的东西?你没有赢得任何比赛组,但是我不相信你需要的任何你到目前为止所说的。

Regex101 Example

答案 2 :(得分:0)

这会吗?

var str = 'NAME=JOHN,SMITH';
str = str.replace(/NAME\=([A-Z]+?)\,([A-Z]+?)/g,'$1 $2');
alert(str);

http://jsfiddle.net/t5ed7gcr/1/

答案 3 :(得分:0)

这个正则表达式应该为你做

/(.+?(?==))|([^,?=?]+)/g

第一部分(.+?(?==))使用positive lookahead搜索=字符。它基本上在=字符

之前对任何内容进行分组

第二部分([^,?=?]+)将所有不是,=的内容分组,因此它会对搜索字符串的其他两个组成部分进行分组。告诉我这是否适合你:)

如果您不想使用NAME部分,则只需使用/(\w+(?!.*=))/g

如果您不希望将其分组,则可以删除为您提供/.+?(?==)|[^,?=?]+/g/\w+(?!.*=)/g的括号。

您可以测试正则表达式here