我如何写一个正则表达式来找到@xyz @xyz asdf?

时间:2018-05-15 10:46:39

标签: javascript

我试图在js中编写一个regexp来查找测试字符串,测试字符串是" @xyz @xyz asdf"它不应该检测纯文本。我正在尝试

strftime

3 个答案:

答案 0 :(得分:0)

我不确定你究竟在问什么,但根据你提供的正则表达式,一个小修改就足够了:

var rgx = /\s*@\w+\s?(?:\w|@)+\b/i;

https://regex101.com/r/X89dpx/1/

或者如果第二个单词必须有@:

var rgx = /@\w+\s?(?![^@]+)[^\s]*/gi;
"some long sentence @xyz @xyz asdf".match(rgx);//["@xyz @xyz"]

如果你想分别匹配@somename姓氏:

var rgx  = /@\w+\s?(?=[^@]+)[^\s]*/gi;

https://regex101.com/r/mBt2wH/2/

可能会更简洁:

var rgx = /@\w+(?:\s[^\s@]+)?/gi;

https://regex101.com/r/mBt2wH/3/

答案 1 :(得分:0)

我无法理解你想要什么,但你可以试试这个正则表达式。 我理解:

@xyz

@xyz asdf

/^[\@]([a-z|A-Z]*)([ ]*[a-z|A-Z]*)/

答案 2 :(得分:0)

/(?:@[^\s$]+\s){2}[\w]+$/

https://regex101.com/r/1Ov6ob/1/

阐释:

两次:@后跟非空格和非结尾中的至少一个(因此字母,符号)

然后一个"字"由至少一个单词字符\ w组成:[a-zA-Z0-9_]或者您可能更喜欢[^ \ s $]。虽然在评论中你也接受了一个尾随空格,所以也许[\ w \ s]。根据你真正需要的内容调整最后一部分。

全部后跟行尾或字符串。这可以防止匹配更多行中的内容。