使用/[ -_]+/
作为字符串参数时。在JavaScript中,它的行为就好像是/['"]+/
"a'b".split(/[ -_]+/)
'a"b'.split(/[ -_]+/)
返回["a", "b"]
我只看到这个行为与确切的正则表达式:[ -_]
,即空格,连字符和下划线。如果我删除这3个字符中的任何一个,它的行为(在我看来是)正确,通过不分割'和'
这个行为正确吗?
-
在字符类中具有特殊的意义。它表示一个字符范围。在本例中,范围是从空格(ASCII 32)到下划线(ASCII 95)。因为'
和"
的ASCII码分别是39和34,所以它们都在这个范围内。
如果您想在文字-
上分割,请转义
"a'b".split(/[ -_]+/)
或者将连字符作为字符类的第一个字符:
"a'b".split(/[- _]+/)
这里的连字符用来指定一个字符范围。
[ -_]
表示"空格和下划线之间的每个字符"。
所以…单引号和双引号明显位于空格和下划线字符之间。
似乎你的regex
是错误的,"-"的意思是:-和_之间的范围内的单个字符。
您可以在http://regex101.com/#javascript站点中测试您的regexp。