2015-10-21 87 views
1

它不能按預期工作。在我的預期中,只有第二個版本才能成功。我期望與其他編程語言具有相同的行爲。對於IP地址的Ruby正則表達式

irb(main):071:0> "10.0.0.62" =~ /^10\.1*/ 
=> 0 
irb(main):072:0> "10.0.0.62" =~ /^10\.*/ 
=> 0 

我讀this

+1

'*'重複上一個標記(第一行中爲1,第二行中爲「\。」)0或更多次。它與glob語法中的'*'不一樣 – nhahtdh

回答

3

在我的預期中,只有第二個版本才能成功。

否,由於所添加下一個*爲1,這意味着1出現零次或多次,即*重複先前令牌零次或多次可能存在的可能性。所以第一個例子必須返回true。

\.*重複字面點零次或多次。所以這^10\.*正則表達式匹配10,10.,10......

+0

同意。我的錯。最近我使用了很多球體。 – user3081519

+0

'1 *'和'\。*'有什麼作用嗎? –

+0

不,第一個例子期望在10之後有一個點,但第二個例子不會。 –