2011-02-02 20 views
0

私はテキストボックスで一致させる必要があるasp.net regularexpressionvalidatorを持っています。テキストがある場合、論理的にルールは次のとおりです。文字の後ろにスペースを入れる正規表現

スペースを削除するためにトリミングした後、テキストは少なくとも3文字である必要があります。 許可される文字はa-zA-Z0-9- '/ \ &です。

4番目の空白以外の文字がある場合に限り、スペースを3番目の文字として許可する式を作成しようとすると、大きな苦労をしています。

誰かが表現を提案できますか?

^[a-zA-Z0-9-'/\\&\.](([a-zA-Z0-9-'/\\&\.][a-zA-Z0-9-' /\\&\.])|([a-zA-Z0-9-' /\\&\.][a-zA-Z0-9-'/\\&\.]))[a-zA-Z0-9-' /\\&\.]{0,}$ 

が、それは '    A' には一致しません:私の最後の試みでした。

ありがとうございました。

+0

、それは正規表現でなければなりませんか?文字列の要件によって、文字列を切り取って長さを確認するか、スペースで整理された文字列にcharseq-regexpを使用する方が簡単です。 – Kissaki

+0

これはlookaheadやlookbehindで可能になるはずですが、aspの正規表現のフレーバがこれをサポートしているかどうかはわかりません:http://www.regular-expressions.info/lookaround.html(私は明らかにこの技術についての手がかりはありません))。 –

+0

トリミング後に文字列が3文字未満に縮小されない限り、文字にスペースを使用できます。 – Craig

答えて

3

OK、今これがすべて1つの正規表現にされています

^\s*(?=[a-zA-Z0-9'/\\&.-])([a-zA-Z0-9'/\\&.\s-]{3,})(?<=\S)\s*$ 

説明:

^      # Start of string 
\s*     # Optional leading whitespace, don't capture that. 
(?=     # Assert that... 
[a-zA-Z0-9'/\\&.-] # the next character is allowed and non-space 
) 
(      # Match and capture... 
[a-zA-Z0-9'/\\&.\s-]{3,} # three or more allowed characters, including space 
) 
(?<=\S)    # Assert that the previous character is not a space 
\s*     # Optional trailing whitespace, don't capture that. 
$      # End of string 

これは

abc 
aZ- &// 
a ab abc x 
    aaa 
a a 

と一致し、

と一致していません
+0

これは完璧なようです。ありがとう! – Craig

+0

私はそれ以降、検証のjavascriptの部分でルック・バックがサポートされていないことを発見しました。私はまだこの表現を使用していますが、クライアントの検証を混乱させました。 – Craig

0

許可されている文字を簡潔にするためにa-zとスペースに簡略化していますか?

^ *[a-z][a-z ]+[a-z] *$

は、スペースを無視します。今手紙。その後、いくつかの文字またはスペース。その後、手紙。より多くのスペースを無視してください。

いっぱいなことは、次のようになります。

^ *[a-zA-Z0-9-'/\\&\.][a-zA-Z0-9-'/\\&\. ]+[a-zA-Z0-9-'/\\&\.] *$

関連する問題