2013-10-26 94 views
1

如果我只关心是否至少有一个匹配,是否有任何理由检查返回的数组的长度,或者只是检查返回的值是否不足够?是否需要检查正则表达式匹配长度以确定是否至少有一个匹配?

JavaScript正则表达式匹配

var str = "The rain in SPAIN stays mainly in the plain"; 
var n = str.match(/ain/g); 
if(n && n.length > 0) {alert('at least one match'); 
// Or 
if(n) {alert('at least one match'); 
+0

有点实验会告诉你很多。 – 2013-10-26 15:06:16

+0

@Jeffman。在我的浏览器中,我不需要检查长度,但这并不意味着没有多少行为不同的浏览器。 – user1032531

回答

0

如果没有匹配被发现(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match) 它返回null所以,

if(n) {alert('at least one match'); 

就足够了。

实际上,你可以对此进行测试,

var str = "The rain in SPAIN stays mainly in the plain"; 
var n = str.match(/ainyyyy/g); 
if(n) {console.log('at least one match')}else{console.log('not found');}; 

在这个例子中没有找到将被打印出来。

+0

谢谢melc,适合我。假设mozilla.org描述的文档适用于所有相对较新的浏览器是否安全? – user1032531

+0

@ user1032531是的,它是对ECMAScript标准的引用https://developer.mozilla.org/en-US/docs/Web/JavaScript – melc

1

要回答你的问题,它在docs

随着g标志提到,如果没有匹配,该方法返回null

所以,不需要检查长度


您可以改用search它接受正则表达式作为参数,并返回该位置

if(str.search(/ain/)==-1);//not found 
else ;//found 

您还可以使用test

if(regexp.test(input)) 
+0

谢谢,我会研究'search()'和'test()',但它并没有真正回答这个问题。 – user1032531

+0

@ user1032531查看编辑 – Anirudha

相关问题