digitSurroundedBySpace

digitSurroundedBySpace

我正在刷新我早已失去的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。为什么第一个不返回?

最佳答案

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

08-19 14:55