簡體   English   中英

使用正則表達式驗證表單(JavaScript正則表達式)

[英]Validating forms with Regular Expressions (Javascript Regex)

我有一個輸入表單,需要實時驗證(.Keyup和.Load)

它應該允許所有Az字符(上和下)以及符號“'”,“-”和“”(撇號,破折號和空白)。

目前,這就是我所擁有的:([[A-Za-z]-\\ s \\')**,而我正在這樣使用它:

var regex = /([A-Za-z]\-\s\')*/;
if (string == "") {
  turn textbox border grey (default)
} else if (!regex.test(string)) {
  turn textbox border red
} else {
  turn textbox border green
}

它所做的一切都會使文本框每次都變為綠色(除非它為空白-變為灰色)。 什么是正確的表達/技術,我在做什么錯?

您需要以下內容:

var regex = /^[A-Za-z\-\s']*$/;

^$分別是字符串錨點的開頭和結尾。 沒有這些匹配項可能會在字符串中的任何位置開始或結束。 由於*表示“將前一個元素重復零次或多次”,因此無論內容如何,​​每個字符串都將匹配,因為正則表達式可以成功匹配零個字符。

當前正則表達式的另一個問題是[A-Za-z]\\-\\s\\'將嘗試按順序匹配字母,破折號,單個空格字符和撇號(總共4個字符)。 要匹配這些選項中的任何一個,您需要將它們全部放在字符類(方括號)內,或與豎線字符( | )交替使用,看起來像([A-Za-z]|-|\\s|') 交替是更通用的,但是字符類是諸如此類的首選方法。

關於轉義,撇號在正則表達式中沒有特殊含義,因此不需要轉義。 如果破折號在字符類中,則僅需將其轉義(如果未轉義,則將其解釋為范圍的一部分)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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