我正在刷新我在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.为什么第一个没有?
答案 0 :(得分:2)
您会对字符串中的字符与字符串中这些字符的索引位置感到困惑。第一场比赛是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: ^