私は有効な米国の都市名を確認するために、正規表現を使用しています。次のように私の要件は次のとおりです。正規の表現で特定の特殊文字を許可する米国の都市と一致する正規表現
- はわずか25文字
- ことができる唯一のアルファ文字と次の特殊文字を受け入れることができます:
',.-
。 偽を使用すると、
St. Clou$$, [email protected], $t. Thomas
を評価する必要があります。真を使用すると、
O'John, St. Cloud, Cov d'Aline, Milt-Freeman
を評価する必要があります。ここで
は、これまでのところ、私が持っている表現です: /(^|\s)[a-zA-Z',.\s-]{1,25}(?=\s|$)((?!\W)[a-zA-Z',.\s-]{1,25}(?=\s|$))?/g
ここでは、私がテストしてきた方法です。
let regex = /(^|\s)[a-zA-Z',.-\s]{1,25}(?=\s|$)((?!\W)[a-zA-Z',.-\s]{1,25}(?=\s|$))?/g;
let str = "St. Clou$$";
let validation = regex.test(str)
if(validation){
return true
} else {
return false }
を上記のテストを使用して、正規表現式はすべて合格しているようです私のテストはまたSt. Clou$$
と$t. Thomas
のためにtrue
を返しています。複数の単語があり、そのうちの1つがまだ受け入れられない特殊文字を持っているように見えます。
上記のすべての誤った条件に対して、式をfalseに戻すにはどうすればよいですか?何かご意見は?ありがとうございました。
最初の '--'は、文字クラス(' [] 'の中)で特別な意味を持ちます。 (^ | \ s)[a-zA-Z '、.- \ s] {1,25}(?= \ s | $) 'は、例えば' s 'にマッチします。または ''(3つのスペース) - または単一の文字 'C '。 2番目の部分はオプションです( '((?!\ W)[a-zA-Z '、.- \ s] {1,25}(?= \ s | $))?だから真を返すために正規表現を一致させる必要があるのは、(例えば)上記の組み合わせの1つです。 '^'と '$'を使って文字列の先頭と末尾を固定してください。 – ClasG
ありがとうございます。はい、私は「 - 」が間違った場所にあることに気づきました。ヘルプをよろしくお願いいたします。 –