2012-04-28 65 views
0

我想匹配的模式,"john.doe",這個正則表達式:這個正則表達式有什麼問題,試圖匹配模式name1.name2?

^(([a-zA-Z0-9_\.-]+)\.([a-zA-Z0-9_\.-]))/?$ 

我不能讓它匹配。

+3

你錯過了第二個名字末尾的'+'嗎? – 2012-04-28 16:47:03

+1

@DmitriChubarov是正確的,http://regexr.com?30q26。德米特里,你應該把它作爲答案並贏得一些聲望。 – Sampson 2012-04-28 16:48:02

+0

而你不應該讓「。」在第一個[]中,因爲它會解散「。」字之間。 – 2012-04-28 17:11:22

回答

-1

就像德米特里Chubarov說(學分他),你只需要在第二組中添加+標誌:

^(([a-zA-Z0-9_\.-]+)\.([a-zA-Z0-9_\.-]+))/?$ 

^((([a-zA-Z0-9_-]+\.)*[a-zA-Z0-9_-]+)\.(([a-zA-Z0-9_-]+\.)*[a-zA-Z0-9_-]+))/?$ 

這將工作:

jhon.doe 
this.also.work 
this.will.also.work 

但不符合:

x.. 
..x 
.. 
... 
.... 
..... 

http://regexpal.com/?flags=gm&regex=%5E(((%3F%3A%5Ba-zA-Z0-9_-%5D%2B%5C)*%5Ba上-ZA-Z0-9 _-%5D%2B)%5C。((%3F%3A%5Ba上-ZA-Z0-9 _-%5D%2B%5C。 )*%5Ba-zA-Z0-9 _-%5D%2B))%2F%3F%24 & input = john.doe%0Afirst.second%0Aand.this.works%0Aand.this.also.works%0Ax。 X%0Ax ..%0A..x%0A ...%0A ...%0A ....%0A .....

+0

最後的「+」將在「 ()「,不在外面,對嗎? – 2012-04-28 17:48:41

+0

你說得對。我編輯了答案。 – rcdmk 2012-04-28 17:51:56

+0

這個匹配'x..',''x'甚至'...'。 – KingCrunch 2012-04-28 20:00:27

1

正則表達式就是超大

list($name1, $name2) = explode('.', $name, 2); 
+0

+1,這裏沒有正則表達式的需要。 – Toto 2012-04-29 09:17:03

0

正則表達式/^([\w\-]+)\.([\w\-]+)$/應該爲你想要做的事情工作。

+1

'\ w'不包含'-' – Toto 2012-04-29 09:16:18

+0

Thanks @ M42。修改了正則表達式以包含'-' – 2012-04-29 19:30:56

相關問題