繁体   English   中英

Javascript REGEX-棘手的表达

[英]Javascript REGEX - Tricky Expression

我整日都在努力寻找解决办法,以解决似乎难以处理的正则表达式表达式。 开始了:

NAME=JOHN,SMITH

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

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

谢谢。 我正在使用JavaScript。


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

我要选择“ JOHN”和“ SMITH”

用这个 :

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

结果将在数组的第二第三个索引上:

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

您可以执行以下操作:

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

这将导致否定的前瞻,意味着您需要一个单词:\\ w +,该单词不能在任意数量的字符之前加上加号=。

然后,全局变量将为您提供多个匹配项(逗号除外)。 我相信这就是您要找的东西? 您不会有任何比赛分组,但是我认为到目前为止您所需要的都不需要。

Regex101示例

这样可以吗

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

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

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

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

第一部分(.+?(?==))使用正向搜索来搜索=字符。 它基本上将=字符之前的任何内容分组

第二部分, ([^,?=?]+)基团的一切,是不是一个,= ,所以它基搜索字符串的其它两个分量。 告诉我这是否对你有用:)

如果您不希望使用NAME部分,则可以简单地使用/(\\w+(?!.*=))/g

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

您可以在这里测试正则表达式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM