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

时间:2013-04-19 02:35:20

标签: javascript regex match

我需要确保给定的字符串不是“选择一个值”。就是这样,其他任何东西都应该匹配模式,除了这个确切的字符串。

我一直在环顾四周,在http://www.regular-expressions.info/javascriptexample.html上尝试了很多组合,但似乎没有什么可以解决的。

我不能否定测试,模式需要完成所有这一切,因为我将它提供给表单验证框架。如果select包含这个文本,我将返回一个错误,等等。所以模式必须匹配其他任何东西,除了这个确切的字符串,

我尝试了很多东西,

(?!Select an account)
!(Select an account)
!(^(Select an account)$)
等等......显然我不明白其中一些机制是如何运作的。我得到“以...开头”和“以...结尾”,但我似乎找不到简单的否定运算符。

出于某种原因我到处寻找正则表达式的解释我没有得到这个简单的用例,也许这并不常见。

我该如何做到这一点?

谢谢!

4 个答案:

答案 0 :(得分:10)

我相信这是在问类似的东西:

Regular Expressions and negating a whole character group

在您的情况下,您可以使用类似

的内容
    ^(?!Select a value).*$

哪个匹配不以“选择值”开头的所有内容。

答案 1 :(得分:2)

不要考虑消极的正则表达式,而是要做出积极的正则表达式并否定条件:

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"
}

答案 2 :(得分:0)

我可能没有正确理解这一点。这不行吗?

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

我不知道你为什么需要正则表达式来做这件事,这就是为什么我可能不理解你的问题是什么。

答案 3 :(得分:0)

另一个解决方案,如果您在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"))