簡體   English   中英

除了給定字符串之外,匹配任何內容的JavaScript模式是什么?

[英]What would be the JavaScript pattern to match anything except a given string?

我需要確保給定的字符串不是“選擇一個值”。 就是這樣,除了這個確切的字符串之外,其他任何東西都應該匹配模式。

我一直在環顧四周,在http://www.regular-expressions.info/javascriptexample.html上嘗試了很多組合,但似乎沒有什么可以做到的。

我不能否定測試,模式需要做到這一切,因為我將它提供給表單驗證框架。 如果select包含這個文本,我將返回一個錯誤,等等。所以模式必須匹配其他任何東西,除了這個確切的字符串,

我嘗試了很多東西,

(?!Select an account)
!(Select an account)
!(^(Select an account)$)

等......顯然我不明白其中一些機制是如何運作的。 我得到“開頭”和“結束”,但我似乎沒有找到一個簡單的否定運算符。

出於某種原因我到處尋找正則表達式的解釋我沒有得到這個簡單的用例,也許這並不常見。

我怎么能做到這一點?

謝謝!

我相信這是在問類似的東西:

正則表達式和否定整個字符組

在你的情況下,你可以使用類似的東西

    ^(?!Select a value).*$

哪個匹配所有不以“選擇值”開頭的內容。

而不是考慮消極的正則表達式,做出積極的正則表達式並否定條件:

if (! /^Select an account$/.test(mystring)) {
  // String is not "Select an account"
}

但是你無論如何都不需要正則表達式:

if (mystring != 'Select an account') {
  // String is not "Select an account"
}

或者如果你想要“包含”:

if (mystring.indexOf('Select an account') == -1) {
  // String does not contain "Select an account"
}

我可能沒有正確理解這一點。 這不行嗎?

if (string != "Select a value") {
    //code here
}

我不知道為什么你需要正則表達式才能做到這一點,這就是為什么我可能不理解你的問題是什么。

另一個解決方案,如果您在HTML5表單驗證中處理正則表達式並且輸入的pattern屬性比一個完全字符串更復雜,則如下(javascript):

function findAllNotPattern(inputField) {
    var allBut1 = inputField.getAttribute("pattern")
    var allBut2 = allBut1.slice(0, 1) + "^" + allBut1.slice(1)
    var allButRe = new RegExp(allBut2, "g")
    return allButRe
}

如果你想在純JavaScript中運行它,你會使用:

findAllNotPattern(document.getElementById("inputFieldId"))

暫無
暫無

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

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