我试图让这个正则表达式返回,并且只返回"flies a"
s = 'test <!-- flies are little birds --> end';
alert(s.match(/f(.*)a/));
为什么会返回
flies a
lies
我怎样才能使 f 和一个强制性的?
谢谢
我试图让这个正则表达式返回,并且只返回"flies a"
s = 'test <!-- flies are little birds --> end';
alert(s.match(/f(.*)a/));
为什么会返回
flies a
lies
我怎样才能使 f 和一个强制性的?
谢谢
.match
返回一个数组。第一个元素是整个匹配的文本,其他元素是捕获组的内容。您有一个捕获组,因此第二个元素是它捕获的文本。
删除组或忽略数组中的其他元素。在任何情况下,您都必须访问第一个:
var match = s.match(/f(.*)a/)[0]; // or /f.*a/
PS:alert
是个不好的调试工具,用console.log
orconsole.dir
来代替。
不要放在括号里。
alert(s.match(/f.*a/));
方括号创建一个捕获组,让您可以指定您对匹配的特定部分感兴趣。在这种情况下,您对整个事物感兴趣,因此您不需要任何括号。
只需删除括号或将整个表达式放入额外的括号中:
s.match(/f.*a/)[0];
或者
s.match(/(f(.*)a)/)[1];