2012-04-28 7 views
0

私はこの正規表現で、パターンに一致する"john.doe"をしようとしています:私はそれを一致させることはできませんパターンname1.name2と一致するこの正規表現で何が問題になっていますか?

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

+3

2番目の名前の最後に '+'を忘れましたか? –

+1

@DmitriChubarovは正しいです、http://regexr.com?30q26。ドミトリー、あなたはそれを答えとして掲示し、評判を得るべきです。 – Sampson

+0

あなたは "。"最初の[]でそれは "。"言葉の間。 –

答えて

-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%0A and.this.works%0A and.this.also.works%0Ax。 X%0Ax ..%0A..x%0A ..%0A ...%0A ....%の0A .....

+0

最後の "+"は " () "、ない、右か? –

+0

あなたは正しいです。私は答えを編集しました。 – rcdmk

+0

これは 'x..'、' ..x'、 '...'にもマッチします。 – KingCrunch

1

正規表現は、ちょうど特大

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

+1、正規表現の必要はありません。 – Toto

0

正規表現です/^([\w\-]+)\.([\w\-]+)$/は、あなたがしようとしているもので動作するはずです。

+1

'\ w'には' -'が含まれていません – Toto

+0

ありがとう@ M42。 '-'を含むように正規表現を修正しました。 –

関連する問題