Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何编写a regexp来查找@xyz@xyz asdf?_Javascript - Fatal编程技术网

Javascript 如何编写a regexp来查找@xyz@xyz asdf?

Javascript 如何编写a regexp来查找@xyz@xyz asdf?,javascript,Javascript,我试图用js编写一个regexp来查找测试字符串,测试字符串是“@xyz@xyz asdf”,它不应该检测纯文本。我正试着和你谈谈 /\s+([@][\w_-]+[\s]{0,1}([A-Za-z0-9@.]+))/ 我不确定您到底问了什么,但根据您提供的正则表达式,稍作修改即可: var rgx = /\s*@\w+\s?(?:\w|@)+\b/i; 或者如果第二个单词必须有@: var rgx = /@\w+\s?(?![^@]+)[^\s]*/gi; "some long sente

我试图用js编写一个regexp来查找测试字符串,测试字符串是“@xyz@xyz asdf”,它不应该检测纯文本。我正试着和你谈谈

/\s+([@][\w_-]+[\s]{0,1}([A-Za-z0-9@.]+))/

我不确定您到底问了什么,但根据您提供的正则表达式,稍作修改即可:

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

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

var rgx = /@\w+\s?(?![^@]+)[^\s]*/gi;
"some long sentence @xyz @xyz asdf".match(rgx);//["@xyz @xyz"]
如果要单独匹配@somename lastname:

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

可以更简洁一点:

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

我不明白你到底想要什么,但你能试试这个正则表达式吗。 我明白:

@xyz

@xyz asdf

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

解释:

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

然后是一个“单词”,至少由单词字符[a-zA-Z0-9]或您可能更喜欢[^\s$]中的一个组成。虽然在注释中您也接受了尾随空格,所以可能[\w\s]。根据您真正需要的调整最后一部分


所有后面跟行或字符串的结尾。这会阻止匹配更多行中的内容。

请编辑您的问题,并清楚显示输入以及您试图在该输入中匹配的内容。如果您试图查找特定字符串,为什么不搜索该格式中的/@xyz@xyz asdf/而不是相同的字符串?您可以告诉我您的规则吗,例如:1-必须以@开头。2-不能包含数字。。。ETC应该是find firstname with@或firstname lastname with@它应该检测空格后面的一个字符串with@所以我的第二个解决方案就是您想要的。根据您自己的描述。实际上,我的问题是,我的应用程序中有@提及,因此我只需要从消息中获取提及的用户。用户可能同时拥有firstname和lastname,或者只有firstnameok,所以我的第一个解决方案就是解决这个问题。在这里,但它将中断,因为这一个
@title@title asdff
它应该匹配这两个。
/(?:@[^\s$]+\s){2}[\w]+$/