我试图在js中编写一个regexp来查找测试字符串,测试字符串是" @xyz @xyz asdf"它不应该检测纯文本。我正在尝试
strftime
答案 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;
答案 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]。根据你真正需要的内容调整最后一部分。
全部后跟行尾或字符串。这可以防止匹配更多行中的内容。