2011-10-18 17 views
0
私はこの正規表現使用して、最初と最後の名前の入力をユーザーを検証するために正規表現を使用することを計画しています

の1-:いいえ、私は「_」アンダースコアを許可したくないしかし2つの正規表現の問題

/^[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð ,.'-]+$/u 

を空白のみ(空白にすることはできません)と少なくとも2文字。上記のregExにどうすればいいですか?私の強力なパスワードの入力の検証のために

2-、私はそれは最小8文字の長さ であること、それは、少なくとも1つの文字と非文字(例えばqsgtest123については、qsgtest!@#)

で構成する必要があります必要がありますこの2つのregExを手伝っていただければ幸いです。

+4

perl?ブースト? C++ 11? Javascript?ヴィム?あなたのツールは何ですか? *正規表現だけでは意味がありません。 – Benoit

答えて

1

この名前

/^(?! +$)[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð ,.'-]{2,}$/u 

のための唯一の違いは、「スペースのみと文字列の末尾がある場合に失敗」とは、「少なくとも2つの文字は」終わりです(?! +$)

テスター:http://gskinner.com/RegExr/?2uv74

とパスワードについては、この1:

/^(?=.*[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð])(?=.*[^a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð]).{8,}$/u 

(私は "手紙" :-)のあなたの定義を使用しています)。それは意味:

look forward if present any character any number of times followed by a "letter" 
look forward if present any character any number of times followed by a "non-letter" 
(these two look forward don't "move" the regex cursor, that is still at the first character) 
match any character 8 or more times 

私はあなたが正規表現の末尾に/uを使用している参照してください。あなたはおそらくPerlを使用しています。任意の文字に一致させるには、\p{L}を使用し、文字以外の文字に一致させるには、長い文字リストを書くのではなく、\P{L}を使用する必要があります。

/^(?=.*\p{L})(?=.*\P{L}).{8,}$/u 

そして、あなたはそれらを含めることを好むだろうがない限り、私たちは

:-)ユニコードの構成可能な特殊記号を無視します:

/^(?! +$)[\p{L} ,.'-]{2,}$/u 

とパスワード1:だから最初のものはなります...次に

/^(?! +$)(?=.{2,})(\p{L}\p{M}*|[ ,.'-])*$/u 

(すべてのスペースと最小長がないことを事前にチェックしてから、上記

/^[\p{L},.'-]+[\p{L} ,.'-]*[\p{L},.'-]+$/u 
+0

ユーザーが文字のみを入力するとどうなりますか? aaaaaaaaaaaaのように。あなたの正規表現は一致しませんか? – FailedDev

+0

@FailedDevパスワードは?いいえ、2番目の楽しみは、少なくとも文字以外のものを探します。 – xanatos

+1

私は参照してください参照してください。巨大なキャラクタークラスでは見えにくい:) – FailedDev

1

はで試してみますあなたの最初の質問に適用する必要があります。

1
/^((?!_)[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð ,.'-])+$/u 

:すべての文字列は、文字で構成されているヘック(オプションゼロ以上組み合わせマークと各)又は[]内の他のシンボル)