簡體   English   中英

匹配Javascript中的正則表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM