ユーザーが 1 つの単語または文字の後に 2 番目の単語または文字の前にアルファベットと 1 つのスペースだけを入力できるようにする正規表現を探しています。
これが私がこれまでやってきたことです。
^[\w ]+$
ただし、単語のみをチェックします。
名前を検証するには上記が必要です。
ユーザーに次のような文字を入力しないようにしてもらいたい}{[]""<>?/\
...
私のjsfiddleは私に許しません
正規表現 では^[\w ]+$
、単語文字またはスペースの任意の組み合わせを 1 つ以上使用でき\w
ます。複数のスペースが連続して含まれているか、スペースのみが含まれています。\w
何らかの理由で「単語」が数字とアンダースコアを含むように定義されている「単語」文字に一致するため、どちらも必要ありません。
代わりに次のことを試してください。
^[A-Za-z']+( [A-Za-z']+)*$
これは一致します:
^ beginning of string
[A-Za-z']+ one or more letters or apostrophe
( [A-Za-z']+)* zero or more instances of (a single space followed by
by one or more letters or apostrophe)
$ end of string
あなたはアポストロフィについて言及していませんでしたが、O'Conner のような名前を許可するために追加しました。
ただし、これはかなりの数の英語以外の名前を除外していることに注意してください. ここで人の名前を検証していると仮定すると、ユーザーに入力したいものを入力させるだけの方がよいと思います。
あなたの主な問題は、UTF-8 を適切にサポートしていない Javascript の正規表現パーサーの制限である可能性があります。あなたが持っているような包括的なものではなく、不要な文字をブロックする除外正規表現パターンを作成する方がよいでしょう。
次のようなパターンが機能する可能性があります。
/^[^}{\[\]\"]+$/g
これは、文字を含まない任意の文字列に一致します}{[]"
。(必要に応じて他を追加しますが、一致しすぎないようにしてください)。
ブラウザ コンソールで実行できる例を次に示します。
var x = '田中太郎'; //sample name.
var filter_name = /^[^}{\[\]\"]+$/g; //add more characters here to exclude as required.
console.log(filter_name.test(x)); //returns true (successful match).
var x = '田中{}太郎'; //sample name with {} added.
var filter_name = /^[^}{\[\]\"]+$/g; //add more characters here to exclude as required.
console.log(filter_name.test(x)); //returns false (failed due to {} braces).
それが役立つことを願っています。
/^([A-Za-z']+( [A-Za-z']+)*){3,30}$/
文字クラスにスペースを追加するだけです!
^[a-zA-Z0-9_ ]*$