![](/img/trans.png)
[英]I'm trying to use regex to validate a telephone number in javascript
[英]I'm trying to form validate a phone number with a javascript
我正在嘗試驗證電話號碼。 不過,這似乎不起作用。 為什么不起作用?
<html>
<head>
<script>
function validateForm() {
var phone1 = document.forms["myForm"]["phone"].value;
var phone2 = ^(\+0?1\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$;
if ( phone1.value.match(phone2) ){
return true;
}else{
alert("Please enter a valid phone number");
return false;
}
}
</script>
</head>
<body>
<form name="myForm"
onsubmit="return validateForm()" method="post">
<label for="phone">Phone:</label><input name="phone" id="phone" value="" placeholder="Zip..." type="text" onsubmit="return validateForm()"/>
<button type="submit">Submit</button>
</form>
</body>
</html>
它肯定與if語句中的值比較有關,我只是想不出如何准確地做到這一點。
var phone2 = ^(\+0?1\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$;
JavaScript中的正則表達式語法錯誤,應該是
var phone2 = /^(\+0?1\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$/;
而且,您兩次獲得字段的值:
var phone1 = document.forms["myForm"]["phone"].value;
// ^
...
if (phone1.value.match(phone2)) {
// ^ `value` property here is not defined
請參閱帶有固定代碼的jsfiddle 。
您的模式RegExp基於您的模式驗證電話號碼,是按照您應驗證的方式進行的。
觀看實況
JS
function validateForm() {
var re = /^(\+0?1\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$/;
var phone1 = document.forms["myForm"]["phone"].value;
var m = re.exec(phone1);
if (m && m[0]){
return true;
}else{
alert("Please enter a valid phone number");
return false;
}
}
的HTML
<form name="myForm" onsubmit="return validateForm()" method="post">
<label for="phone">Phone:</label>
<input name="phone" id="phone" value="" placeholder="Zip..." type="text" onsubmit="return validateForm()" />
<button type="submit">Submit</button>
</form>
使用時應使用RegExp模式
^((\+?)(1?(\-?)?))(\d{3})(-|\s)?\d{3}(-|\s)?\d{4}$
用戶傾向於按自己喜歡的方式在文本框中輸入詳細信息。 如果表單阻止他們以特定方式在文本框中輸入詳細信息,這將是一個令人討厭的體驗。 最好將您的正則表達式概括為此類模式。 @sainaen已經指出了錯誤,但在以下情況下,您的正則表達式仍會失敗。
+1-234-123-1234
+1234-123-1234
+1234123-1234
+12341231234
2341231234
434-123-1234 //with a space in the end or beginning
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.