2011-06-10 52 views
1

我要插入一個文本框,只有英文字符和其他特殊字符,如PHP的正則表達式,使字符串只有英文字符

[email protected]{]{[ 

等等

而且我想檢查字符串含有這些中的至少2個字符:(A-ZA-Z0-9)

所以我想的是:

preg_match('/[^a-zA-Z0-9 -"?()[]#:/\'_+*%@!~`$><,.;{}|\]/',$string) 

這是一個好方法嗎?

+0

好奇,你爲什麼要這樣做? – Znarkus 2011-06-10 08:26:33

+0

我有一個URL看起來像線程/ ID /標題,我試圖不顯示不必要的字符 – fxuser 2011-06-10 09:29:52

回答

3

沒有你的做法是不好

試試這一個。你需要在角色類中完成你想要的特殊字符。你需要逃離]\-^角色,因爲他們在課堂上有特殊的含義(取決於他們的位置)。

^(?=.*[A-Za-z0-9].*[A-Za-z0-9])[[email protected]{}[\]A-Za-z0-9]*$ 

看到它here on Regexr

第一部分是一個積極的向前看的某個地方,確保您的[A-Za-z0-9]需要兩個字符的字符串中。

然後是字符類[A-Za-z0-9])[[email protected]\{\}\[\]A-Za-z0-9],您可以在其中放入要匹配的字符。

^在我的表達式的開始處確保它匹配從開頭開始,並在末尾確保匹配字符串的末尾。

^在你的例子的開頭是否定完整的字符類,你不想我猜,如果你想匹配字符^把它放在類的其他地方。你班上的-定義了一個與-"相匹配的字符範圍,我不知道那些字符是什麼,但可能比你想要的要多。將-放在開頭或結尾或轉義。

+0

謝謝,當我嘗試進入例如「這是一個測試文本(測試文本)等」等「給它作爲無效 – fxuser 2011-06-10 09:18:54

+0

把空間和圓括號到字符類,它將匹配 – stema 2011-06-10 09:22:03

+0

我編輯它,現在看起來像這樣:**/^(?=。* [A-Za-z0-9]。[A-Za-z0-9] )[$!@ \(){\} \ [\] A-Za-z0-9] * $/**但是如果我想添加逗號或問號或別的東西,我必須將它們添加到括號中...我想能夠寫任何東西,除了它至少有2個字符的a-zA-Z0-9或者它不是垃圾短信 – fxuser 2011-06-10 09:38:20

0
$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; 

You want learn more try this link

+0

@lbu你編輯我的問題花花公子 – K6t 2011-06-10 09:32:18

+0

「你爲什麼編輯我的問題,夥計? – Znarkus 2011-06-10 09:48:54

+0

@Znarkus嘿夥計..只看到後面的烏龜幻影洞後面.. – K6t 2011-06-10 10:17:27

相關問題