2012-05-02 15 views
0

文字列に一致する正規表現(.NET)を書く必要があります。 文字で始まり、文字、数字、ピリオド、ハイフン、、アンダースコアを含むことができ、「@」に従ってください。私は後のものを試しましたが、例えば 'a_bc12 @'と一致しません。文字の始まりに一致する正規表現を書くには、文字、数字、ハイフン、1つのアンダースコアを使用できますか?

修正方法?

^[A-Za-z][A-Za-z0-9-]+_{0,1}([email protected])

EDITED: それは、{3,10}の長さを含むべきです。

答えて

2

あなたは再びアンダースコアの後に文字を許可する必要があります。

/^[A-Za-z][A-Za-z0-9\.-]*_?[A-Za-z0-9\.-]*([email protected])/ 

また、私はピリオドを追加し、オプションのアンダースコアの前と後の文字列を作りました。

+0

、もっと短い方法がありますか? – theateist

+0

私はそうは思わない。反復は、1つ以上の許容されるアンダースコアの出現にのみ適用されます。 – Bergi

+0

もしそれを{3,10}の長さに制限したいのであれば、どうすればいいですか?これはうまくいきません。 '/^[A-Za-z]([A-Za-z0-9\.-]*_?[A-Za-z0-9\.-]*){2,9} (?= @)/ ' – theateist

0

これを試してみてください:

^[A-Za-z][A-Za-z0-9-\.]*_{0,1}([email protected]) 

+のご利用には、1つまたは複数の発生箇所です。最初の文字に続いて0以上の数値が必要です。*です。

+0

このパターンのピリオドは一致しません – skyfoot

+0

今すぐ存在します。ありがとう。好奇心のために –

0

は、このように変更してください:

[A-Za-z]+[A-Za-z0-9-/.]*_[A-Za-z0-9-/.]*@` 

あなたが式の後に+を使用する場合、それは「1回以上」を意味 あなたは*を使用する場合、それは「0回以上」を意味

をそれが役に立てば幸い。

関連する問題