javascript - 理解 JavaScript 中使用\S 的 REGEX 怪癖

标签 javascript regex

我正在刷新我丢失已久的 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/

相关文章:

javascript - 从 URL 嵌入 Youtube 视频

JavaScript 在不活动的 Android Chrome 选项卡中停止

javascript - 用按钮替换浏览器滚动条

javascript - 获取与正则表达式与数据属性匹配的行的 ID

regex - 负正则表达式

javascript - 验证输入的浮点格式

javascript - 如何从 Textarea 中删除所有 anchor 和 anchor 文本?

java - 使用匹配项匹配字符串开头的点?

javascript - 如何在 Bootstrap 模式下的桌面版本网站中的 &lt;iframe&gt; 中预览移动网站

JavaScript 类型数组 - 不同的 View