如何将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',任何想法?
答案 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;
答案 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/);