2013-12-09 88 views
0

我需要接受字母數字字符和這些特殊字符/.~?=+ &正則表達式接受字母數字和/.~?=+&

我在PHP這樣做,因此一個驗證表達式要麼給出我錯誤或根本不工作

我試過這個東西。但它甚至不接受字母數字:

preg_match('/^[\w ]+([\.\~\?\=\+\&][\w ]*)?$/',$var) 
+1

你在對什麼進行測試?你如何進行這項測試?你會得到什麼錯誤?什麼「根本不工作」是什麼意思? – Quentin

+0

我正在將數據輸入到表單中,然後嘗試使用正則表達式對其進行驗證。關於分隔符和東西的不同錯誤,但主要是因爲我不太瞭解正則表達式。 「根本不工作」意味着它要麼通過它,但如果它不正確,或者即使它不是真的 – Yochert

+0

像這樣? http://regex101.com/r/yA5oW8 –

回答

1

您不必在[]範圍內轉義字符。唯一必須轉義的是\/[[。爲了匹配字母數字和你的特殊字符集嘗試以下操作:

(\w|[\/.~?=+&])* 
+0

和斜槓...'\ /' –

+0

哦,我錯過了那一個。謝謝@scrowler! – MarcinJuraszek

0

可以代表字母,並使用下面的表達式上面的字符:

[[:alnum:]\/.~?=+&]

然後,您可以使用此PHP代碼以迭代在所有比賽中的字符串...

preg_match_all('%[[:alnum:]/.~?=+&]*%i', $var, $result, PREG_PATTERN_ORDER); 
for ($i = 0; $i < count($result[0]); $i++) { 
    # Matched text = $result[0][$i]; 
} 
1

您可以使用以下方法:

preg_match('/^[a-z0-9\/?&+~=.]*$/i', $var, $match); 
相關問題