我正在刷新我丢失已久的 JavaScript 正则表达式知识,但无法理解这一点。
我记得\S 表示不是空格,\D 表示不是数字。这些是搜索空格或数字的小写替代项的对应项。分别。
搜索第一个两边都没有空格的非数字宪章 代码:
var digitSurroundedBySpace = /\S\D\S/;
document.writeln("1234567AB".search(digitSurroundedBySpace));
这会返回 6。这不是我所期望的。似乎仅仅第一个\S 的存在就使答案减少了一个。
搜索第一个后面没有空格的非数字章程。
var digitSurroundedBySpace = /\D\S/;
document.writeln("1234567AB".search(digitSurroundedBySpace));
这会返回我期望的 7。
他们不应该都返回 7 吗?为什么第一个不返回?
最佳答案
您对字符串中的字符与字符串中这些字符的索引位置感到困惑。第一场比赛在 7AB
进行。 7
是字符串中的第 6 个字符,因为我们从 0 开始计数。因此,您的 .search()
返回 6,即 7AB< 的正确偏移量
.
var digitSurroundedBySpace = /\S\D\S/;
document.writeln("1234567AB".search(digitSurroundedBySpace));
// index: 012345678
// match: ^
var digitSurroundedBySpace = /\D\S/;
document.writeln("1234567AB".search(digitSurroundedBySpace));
// index: 012345678
// match: ^
关于javascript - 理解 JavaScript 中使用\S 的 REGEX 怪癖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21962875/