[英]Match Regular Expression in Javascript
我正在使用Javascript驗證我的表單字段,並且以下正則表達式不起作用。 我使用錯誤的方法進行配對嗎?
var name=document.getElementById('first_name').value;
if (!name.match(/^[A-Za-z]*$/))
{
document.getElementById('error').innerHTML = "Please match the regxp";
document.getElementById('first_name').focus();
return false;
}
我正在表單提交上執行以上代碼。
*
重復運算符匹配零個或多個出現,因此正則表達式^[A-Za-z]*$
將匹配零個或多個出現的字母,即它將匹配空字符串以及僅包含字母的字符串。
您可能打算使用+
重復運算符來匹配1個或多個類似^[A-Za-z]+$
嘗試這個。 使用Regex可以做到這一點。
function validateName(x){
var name=document.getElementById('first_name').value;
var pattern = new RegExp('/^\w+$/');
if(!pattern.test(name)){
alert("Use only A-Z, a-z, 0-9, or _ in names.");
return false;
}
}
我不確定您的問題出在您發布的代碼中,是否正確綁定到事件處理程序?
它在jsfiddle中正常工作http://jsfiddle.net/dD6y3/
只是添加了模糊綁定,也許正是您所缺少的? 還是什么錯? 不看更多代碼就很難說。
$('#first_name').on("blur", function() {
var name = document.getElementById('first_name').value;
if (!name.match(/^[A-Za-z]*$/)) {
document.getElementById('error').innerHTML="Please match the regxp";
document.getElementById('first_name').focus();
return false;
}
});
您的正則表達式似乎還可以,您是否已將事件附加到輸入中? 您應該添加事件以便檢查它是否正確: http : //www.w3schools.com/js/js_htmldom_events.asp
這是我的解決方案,當您取消選擇輸入時,當您更改為另一個輸入時,它將檢查錯誤:
的HTML
<div id='error'></div>
<input id='first_name' onchange="checkChanges()"/>
盡管這可以工作,但是您應該使用事件處理程序或jQuery之類的framerowk,以確保它可以在所有可能的瀏覽器上使用
JS
function checkChanges() {
var name = document.getElementById('first_name').value;
if (!name.match(/^[A-Za-z]*$/))
{
document.getElementById('error').innerHTML="Please match the regxp";
document.getElementById('first_name').focus();
return false;
} else {
document.getElementById('error').innerHTML="OK";
}
}
假設您希望您的名字以字母開頭,並且您沒有使用jQuery ...
var errors = document.getElementById('error');
var firstName = document.getElementById('first_name');
function validate(element) {
var name = element.value;
if (name.match(/^[A-Za-z]+$/)) {
return true;
}
errors.innerHTML = "Name must begin with a letter";
element.focus();
return false;
}
validate(firstName); // needs moving to a submit event handler or similar
我已經解決了...
為了匹配正則表達式,我使用了以下方法...
var pattern=/^[A-Za-z0-9]+$/;
if (!pattern.test(document.getElementById('first_name').value))
{
document.getElementById('error').innerHTML = "only the characters and 0-9 are allowed";
document.getElementById('first_name').focus();
return false;
}
順便說一句,謝謝你的答復
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.