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