在JavaScript中使用\ S了解REGEX Quirk

时间:2014-02-23 01:12:12

标签: javascript regex

我正在刷新我在Java Script中长期失去的正则表达式,并且无法理解这一点。

我记得\ 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.为什么第一个没有?

1 个答案:

答案 0 :(得分:2)

您会对字符串中的字符与字符串中这些字符的索引位置感到困惑。第一场比赛是7AB7是字符串中的字符编号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:               ^