2013-10-26 93 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

相關問題