この正規表現では、次の言語のテキストを検証できません :
/^[\p{L}\p{Nd}-_.]{1,20}$/u
動作しない言語:
Bengali, Gujarati, Hindi, Marathi, Thai, Tamil, Telugu, Vietnamese
PHP のpreg_match
.
私は何が欠けていますか?
この正規表現では、次の言語のテキストを検証できません :
/^[\p{L}\p{Nd}-_.]{1,20}$/u
動作しない言語:
Bengali, Gujarati, Hindi, Marathi, Thai, Tamil, Telugu, Vietnamese
PHP のpreg_match
.
私は何が欠けていますか?
ダッシュの使い方が間違っています。リテラルのダッシュ文字と一致させたい場合は、エスケープする ( \-
) か、文字クラスの最後に配置する必要があります。
また、私はこれらの言語に精通していませんが、マークも考慮する必要があると思います:
/^[\p{L}\p{Nd}\p{M}_.-]{1,20}$/u
-
問題は正規表現に起因するものではありません (文字が常に文字クラスの先頭または末尾にある必要があるという事実を除いて) 。パターンは次のように短縮できることに注意してください。
/^[\w.-]{1,20}$/u
また
/^[\p{Xan}.-]{1,20}$/u
アンダースコアを削除したい場合