2016-08-21 18 views
1

我不`噸明白爲什麼我得到一個錯誤後,我試圖執行這個簡單的JS代碼:「無法讀取空的特性‘長度’」正則表達式的結果

<!DOCTYPE html> 
 
<html> 
 
<script> 
 
    var str = "x*1/2"; 
 
    var patt1 = /(* | \/)/g; 
 
    var result = str.match(patt1); 
 
    document.write(result.length); 
 
</script> 
 
</html>
我已經試過 typeof看到我的變量的類型: str=string; patt1=object; result=object;但我仍然沒有線索 s什麼問題。

+1

因爲'match'返回'null'如果不匹配。 – nem035

+1

你的正則表達式也是無效的。 –

+0

@AdamAzad:有效。它正在尋找零個或更多的空間,或者一個空格後面跟着斜槓。 (這不是OP想要的,我敢肯定,但是......) –

回答

2

我不`噸明白爲什麼我得到一個錯誤後,我嘗試執行此 簡單的JS代碼

發生這種情況,因爲你的模式不能對所提供的輸入"x*1/2"匹配。所以match返回null。考慮下面的代碼片斷,我們使用一個無意義的模式,但是可以匹配這個輸入。

var str = "x*1/2"; 
 
var patt1 = /([*]?\/)/g; 
 
var result = str.match(patt1); 
 
console.log(result.length);

+0

你可以指導OP不要使用'document.write' :) –

+0

@AdamAzad'document.write'在這裏僅用於結果。我不是使用這種方法的提倡者:) – Christos

+0

下面的代碼我發現我的情況正確的正則表達式:'patt1 = /([\ /] | [*])/ g;'現在沒關係。謝謝Christos。 –