Match()与JS上的正则表达式返回NULL

时间:2015-04-13 10:16:38

标签: javascript regex

如何将JS中的字符串变量设置为来自另一个String的匹配的正则表达式? 当我使用Sublime或Notepad进行搜索时,它可以正常工作,但它不适用于JS。

var str = " 261   OSCAR BARRAGAN ALFARO EL 17-05-14 $2832.00";
var result = str.match('\s[0-9]{3}\s');
console.log(result);

OUTPUT : NULL

然而预期的输出应该是'261',任何想法?

3 个答案:

答案 0 :(得分:1)

你的正则表达式不是正则表达式,它是一个字符串。正则表达式文字的分隔符为/,而不是'

var result = str.match(/\s[0-9]{3}\s/);
// Note ---------------^------------^

请注意,结果为" 261 ",而不是"261"(请注意空格)。如果您不想要空格,可以使用捕获组:

var match = str.match(/\s([0-9]{3})\s/);
// Note -----------------^--------^
var result = match ? match[1] : undefined;

实例:



var str = " 261   OSCAR BARRAGAN ALFARO EL 17-05-14 $2832.00";
var match = str.match(/\s([0-9]{3})\s/);
var result = match ? match[1] : undefined;
snippet.log(result);

<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您必须将其用作正则表达式。当你将它包装在''里面时,它将作为字符串

var str = " 261   OSCAR BARRAGAN ALFARO EL 17-05-14 $2832.00";
var result = str.match(/\s[0-9]{3}\s/);
console.log(result[0]); 
//result will contain an array of matches and in that index 0 will give you 261

答案 2 :(得分:0)

您的RegEx模式不对。使用

var result = str.match(/\s[0-9]{3}\s/);