我正在刷新我早已失去的Java脚本正则表达式知识,无法理解这一点。
我记得\ 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: ^