我正在尝试让此正则表达式返回,并且只返回"flies a"
s = 'test <!-- flies are little birds --> end';
alert(s.match(/f(.*)a/));
为什么会返回
flies a
lies
我如何制作f和强制性的?
谢谢
答案 0 :(得分:4)
.match
返回一个数组。第一个元素是整个匹配的文本,而每个其他元素是捕获组的内容。您有一个捕获组,因此第二个元素是它捕获的文本。
删除组或忽略数组中的其他元素。在任何情况下你都必须访问第一个:
var match = s.match(/f(.*)a/)[0]; // or /f.*a/
P.S。:alert
是一个糟糕的调试工具,请改用console.log
或console.dir
。
答案 1 :(得分:2)
请勿放入括号内。
alert(s.match(/f.*a/));
括号创建一个捕获组,可让您指定您对匹配的特定部分感兴趣。在这种情况下,您对整个事情感兴趣,因此您不需要任何括号。
答案 2 :(得分:0)
只需删除括号或将整个表达式放入其他括号中:
s.match(/f.*a/)[0];
要么
s.match(/(f(.*)a)/)[1];