[英]php regex allow only english characters in string
我想只在文本框中插入英文字符和其他特殊字符,例如
$!@{]{[
ETC...
但我也想檢查字符串是否包含至少 2 個字符:(a-zA-Z0-9)
所以我想到了這個:
preg_match('/[^a-zA-Z0-9 -"?()[]#:/\'_+*%@!~`$><,.;{}|\]/',$string)
這是一個好方法嗎?
不,你的方法不好
試試這個。 你需要把你想要的特殊字符補全成字符class。 您需要轉義]\-^
字符,因為它們在 class 中具有特殊含義(取決於它們的位置)。
^(?=.*[A-Za-z0-9].*[A-Za-z0-9])[$!@{}[\]A-Za-z0-9]*$
第一部分是積極的前瞻,確保您的[A-Za-z0-9]
要求的兩個字符在字符串中的某個位置。
然后是字符 class [A-Za-z0-9])[$!@\{\}\[\]A-Za-z0-9]
,您可以在其中輸入要匹配的字符。
我的表達式開頭的^
確保它從開頭匹配,末尾的$
確保它匹配字符串的結尾。
示例開頭的^
是對完整字符 class 的否定,我猜你不想要什么,如果你想匹配字符^
把它放在 class 的其他地方。 class 中間的-
定義了一個與-"
中的所有內容匹配的字符范圍,我不知道是什么字符,但可能比你想要的更多。將-
放在開頭或結尾或轉義它。
$parameter ='(a-zA-Z){2}';
if $string='kasdfhk890';
preg_match($string,$parameter); //
return false;
if $string='k';
preg_match($string,$parameter); // single char error
return false;
if $string='kuyyee';
preg_match($string,$parameter);// english character only
return true;
(?:.*?[0-9a-zA-Z]){2,}[0-9a-zA-Z$!@{\]{\[]*
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.