javascript - 为什么 JavaScript string.split(/[ -_]+/) 的行为就像引号 (' and ") 包含在 [group] 中一样?

标签 javascript regex string split

当在 JavaScript 中使用 /[ -_]+/ 作为 string.split 的参数时,它的作用就像 /['\"]+/

"a'b".split(/[ -_]+/)
'a"b'.split(/[ -_]+/)

返回

["a", "b"]

我只在精确的正则表达式中看到此行为:[ -_] 即空格、连字符和下划线。如果我删除这 3 个字符中的任何一个,它的行为(在我看来)是正确的,不会拆分 ' 和 "

这种行为正确吗?

最佳答案

- has special meaning inside of character classes.它表示一系列字符。在本例中,范围是从空格 (ASCII 32) 到下划线 (ASCII 95)。由于 '" 的 ASCII 代码分别为 39 和 34,因此它们落在该范围内。

如果你想在文字 - 上进行分割,请转义它;

"a'b".split(/[ \-_]+/)

或者将连字符设为字符类的第一个字符:

"a'b".split(/[- _]+/)

关于javascript - 为什么 JavaScript string.split(/[ -_]+/) 的行为就像引号 (' and ") 包含在 [group] 中一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24576871/

相关文章:

javascript - 如何在 Django 中使用 npm 包和 ES6 功能?

javascript - 在 Javascript 中获取多值变量的连接字符串

javascript - 如何修复 "Uncaught TypeError: Cannot read property ' value' of null”错误?

SQL Server 正则表达式

c# - 过滤字符串并从中创建新的

c++ - std::set with string key 和潜在的效率损失

javascript - 如何使用 axios 模拟虚假 url 进行单元测试?

Java替换字符串中的多个子串

java - 有没有办法使用包含变量的正则表达式来替换字符串中的字符

字符指针段错误