我遇到了一個常見問題,我似乎無法確定原因。我正在爲網站上的註冊表單上的多個字段致力於server side validation
。這是PHP
塊:正則表達式不一致驗證
if ('phone-name' == $tag->name) {
$value = $_POST[$tag->name];
if (!preg_match('/\+([0-9])([ .-]*\d){7,12}/', $value)) {
$result->invalidate($tag, "You must enter a valid number: $value is not valid");
}
}
的regex
我使用應只允許用戶輸入:
- 的 「+」 號
- 空間,點和連字符
- 和任何數字從0到9
但是,當我運行以下測試時,我得到這些結果:
測試1:無效輸入
+3588<script>alert(1)</script>
TEST 2:有效輸入
+35388888888<script>alert(1)</script>
有我丟失的東西嗎?爲什麼正則表達式對TEST 2而不是TEST 1起作用?任何幫助深表感謝。
感謝
爲什麼會得到低投票?完全有效的問題 – Javacadabra
匹配,編號範圍'0-9'需要重複'{7,12}'分鐘'7'到最大'12'次。現在,'3588'是四個,所以不匹配,'35388888888'是'11',所以它匹配 – Viral
什麼是''? –