繁体   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