2016-10-06 48 views
0

文字の数字とスペースのみを許可しようとしています。正規表現以外の非数字、非数字の正規表現を受け入れる正規表現

なし。 ! 〜 `

およびその他の特殊文字(私は_が手紙ことになっていることを知っている..私はちょうどそれをしたいいけない)

、私の質問は:私はそれを書くべきですか?

は、主に、IVEは次のように「違法」な文字を指定answeresが見つかりました:

^[^$&+,:;[email protected]}{#|'\\<>\/.^*()%!\]\[~`_-]+[^$&+,:;[email protected]}{#|'\\<>\/.^*()%!\]\[~`_-]*$ 

をしかしtheresの場合、私は好きでそれを行うには良い方法と思いまして:

^[a-zA-Z0-9\s]+[a-zA-z0-9\s]*$ 

に問題これは、文字[]^``_\が文字/数字/スペースの後にある場合、その文字はまだまだ通過します。

[]`\^_ <<this will be illegal 
1[]`\^_ <<this will not be caught as illegal 

私も試してみました:^[\w\d\s]+[\w\d\s]*$

が、それは_

編集 を通して行くことができます私は2番目のコード(AZ)のタイプミスがそう

^[a-zA-Z0-9\s]+[a-zA-Z0-9\s]*$ 

にそれを変更し、それは完全に

の作品でした

これは、最初のコードのような永遠に特別なチャットを入力する代わりに、このように書く方が良いですか? このチェックでスリップする可能性のある文字はありますか?

+2

2番目のパターンに「A-Z」のタイプミスがありますか、実際にはありますか?それがうまくいかない理由かもしれません。 –

+1

'\ w'の定義を見て、拡張子をアンダースコアなしで書き直します。 –

+0

@SebastianProskeそれは**です**理由は –

答えて

-1

次は、(上記のあなたの例の簡素化/修正版)を動作するはず

ます(上部または下部)のすべての文字と、任意の数だけ空白文字含める場合:

^[a-zA-Z0-9 ]+$ 

をあなたは空白にしたい場合:

^[a-zA-Z0-9\s]+$ 
+0

space **!= ** '\ s' –

+0

私は\ sがスペースと同じではないことを知っていますが、SpiderPoolの質問は「スペース」と言っています。私に投票を下す前に、質問を再読してください。 – bcampolo

+1

IMHO、*スペース*は*空白*より大きく、 '\ t'は例えば –

1

私はよくあなたの質問を理解している場合、あなたはこれを行うには否定文字クラスを使用することができます。例えば、手紙されていないすべての文字にマッチ:

[^A-Za-z]+ 

あなただけの追加、有効としてあなたがスペースや空白(\s)を考慮した場合にのみ、文字

^[^A-Za-z]+$ 

が含まれている行を一致させるためにアンカーを使用することができますその文字クラスに:「最高の」アプローチに関連

^[^A-Za-z\s]+$ 

、あなたは確かにパフォーマンスを比較することができますが、何のPerformaかの最良の方法nceは大きな影響を及ぼさず、imhoは最も読みやすい表現です。

関連する問題