我仍然是一個正則表達式的新手。我要創建這個規則正則表達式:字母數字,空格,破折號和散列表的正則表達式
if (preg_match('^[ A-Za-z0-9_-#]^', $text) == 1) {
return true;
}
else {
return false;
}
總之,我想$文本接受文本,數字,空格,下劃線,破折號和散列(#)。 上述reg表達是否正確?它總是返回true。
我仍然是一個正則表達式的新手。我要創建這個規則正則表達式:字母數字,空格,破折號和散列表的正則表達式
if (preg_match('^[ A-Za-z0-9_-#]^', $text) == 1) {
return true;
}
else {
return false;
}
總之,我想$文本接受文本,數字,空格,下劃線,破折號和散列(#)。 上述reg表達是否正確?它總是返回true。
首先,您不應該使用^
作爲表達式邊界,因爲它們也用於表達式錨;改爲使用/
,~
或#
。
二,字符集中的破折號應該在最後位置;否則它的範圍從_
到#
,這可能不是你想要的。
第三,表達式現在只匹配單個字符;你會想要使用乘數,如+
或*
。
最後,您應該錨表達這樣,只有那些有效字符存在的字符串:
/^[ \w#-]+$/
順便說一句,我把它換成A-Za-z0-9_
與\w
作爲一種快捷方式。
太棒了!有用!非常感謝! –
,你可以做:
\w
立場[a-zA-Z0-9_]
-
在字符類特殊的意義,因爲它是用來定義範圍,因此必須將其放置在開始時或在課堂結束時例如:
if (preg_match('~[\w #-]++~', $subject))
...
else
...
你有兩個''^錨。 – Blender
@Orangepill不行,破折號是在錯誤的地方。 –