我在这里找不到问题,不管我尝试什么,我不明白结果
我在脚本中有这个:
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 代码。始终采用相同的格式,只是更改数字。
在我尝试过的每个正则表达式测试器上,结果都符合预期,它带有 match[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 中的斜线就可以了。我虽然该模式被逐字传递给未解释的正则表达式对象,但这是我的问题。