Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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 需要匹配所有元素的正则表达式,如<;空间>@someText<;空间>;_Javascript_Regex - Fatal编程技术网

Javascript 需要匹配所有元素的正则表达式,如<;空间>@someText<;空间>;

Javascript 需要匹配所有元素的正则表达式,如<;空间>@someText<;空间>;,javascript,regex,Javascript,Regex,例外情况: 字符串-->匹配的开头,不带第一个空格 字符串结尾-->匹配,不带最后一个空格 示例: const test1 = '@test1 @test2 @test3' const test2 = '@test1 @test2' const test3 = '@test1 @test2 @test3 @test4' 最接近我的是下一个正则表达式: const closestSolution = /(?:\s|^)@[A-Za-z0-9\-\.\_\#]*(?:\s|$)/g 因此

例外情况:

  • 字符串-->匹配的开头,不带第一个空格
  • 字符串结尾-->匹配,不带最后一个空格
示例:

const test1 = '@test1 @test2 @test3'
const test2 = '@test1  @test2'
const test3 = '@test1  @test2 @test3 @test4'
最接近我的是下一个正则表达式:

const closestSolution = /(?:\s|^)@[A-Za-z0-9\-\.\_\#]*(?:\s|$)/g
因此,我的解决方案的结果是:

const res1 = test1.match(closestSolution)
const res2 = test2.match(closestSolution)
const res3 = test3.match(closestSolution)
console.log(res1) // returns ["@test1 ", " @test3"] when expected ["@test1", "@test2", "@test3"]
console.log(res2) // returns ["@test1 ", " @test2"] when expected ["@test1", "@test2"]
console.log(res3) // returns ["@test1 ", " @test2 ", " @test4"] when expected ["@test1", "@test2", "@test3", "@test4"]

您可能会避免使用显式空格处理,而关注@和其他有意义的数据:

const new_solution = /@[A-Za-z0-9\-\.\_\#]+/g

use可以这样使用组:
(\@\w+
test3和test4不应出现在输出中。它们不是以“@”开头的。
const closestSolution=/@[A-Za-z0-9\-\.\\\\]+/g
可能是正确的答案。对不起,我的错。更正了问题中的键入错误,因此出现了“@test3”和“@test4”/[A-Za-z0-9\-\.\]+/g看起来像我要找的(/@?[A-Za-z0-9\-.\\\\]+/g对于初始问题版本是正确的)。谢谢