javascript - JS 中的这个正则表达式返回了一个意外的值

标签 javascript regex

我在这里找不到问题,无论我尝试什么,我都不明白结果

我在脚本中有这个:

var pattern = "(\d*(?=,))";
var regex = new RegExp( pattern, "i" );
var string_to_match = "[\w\s-]{3,}";
var match = regex.exec( string_to_match );
alert( match.length ); --> prints 2
alert( typeof( match )); --> prints object

alert( match[0] ); --> prints nothing, or empty space
alert( match[0].length ); --> prints 0
alert( typeof( match[0] )); --> prints string

alert( match[1] ); --> prints nothing, or empty space
alert( match[1].length ); --> prints 0
alert( typeof( match[1] )); --> prints string

这只是我正在进行的测试的最后一个版本。在真实/最终脚本中,要匹配的字符串来自 HTML 代码。始终采用相同的格式,只是更改了数字。

在我尝试过的每个正则表达式测试器上,结果都符合预期,它在匹配 [0] 中给出了数字

那么,我做错了什么?我在这里缺少什么?

回答后更新:

使用下面的组合,按预期工作

var regex = /(\d*(?=,))/i;

使用下面的组合,按预期工作

var pattern = "(\\d*(?=,))";
var regex = new RegExp( pattern, "i" );

使用下面的组合,它不起作用

var pattern = "/(\d*(?=,))/";
var regex = new RegExp( pattern, "i" );

因此,仅添加斜线作为分隔符是行不通的。我在最初的尝试中尝试过,因为我习惯了 PHP 中的正则表达式。转义\d 中的斜杠就可以了。我虽然该模式按字面意思传递给了未解释的 regexp 对象,但那是我的问题。

最佳答案

问题是 \d。将其更改为 \\d,或使用斜线分隔正则表达式:

var regex = /(\d*(?=,))/i;

关于javascript - JS 中的这个正则表达式返回了一个意外的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17509952/

相关文章:

excel - 如何在多行或单行值之间进行正则表达式

javascript - 使用javascript从存储在本地存储中的多维数组中删除数组

javascript - 使用 .attr() 与 .get() 问题

javascript - 如何使用 Node.js 查询 mysql 数据库以通过 url 中的名称(而不仅仅是 ID)获取特定用户(字段)

regex - 在第一个和最后一个逗号上拆分字符串

c# - 是否可以根据正则表达式模式生成示例字符串?

javascript - 使用 AJAX 和 jQuery .get() 从外部文档检索特定元素

javascript - jQuery-ui-tooltip 箭头位置

java - 如何在目录中搜索带有re的文件?

java - 如何使用正则表达式从线性表达式的特定部分提取运算符