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

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

本文关键字:字符串 任何内 模式 JavaScript 什么      更新时间:2023-09-26

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

我一直在寻找,并尝试了许多组合在http://www.regular-expressions.info/javascriptexample.html上,但似乎没有做的伎俩。

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

我尝试了很多事情,

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

等等……显然,我不明白其中一些机制是如何运作的。我得到"以"开始和"以"结束,但我似乎找不到一个简单的负运算符。

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

我怎样才能做到这一点?

谢谢!

我相信这是在问类似的问题:

正则表达式和对整个字符组求反

你可以用

    ^(?!Select a value).*$

匹配所有不以"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"
}

或者如果你想要"contains":

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

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

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

我不知道为什么你需要正则表达式来做到这一点,这就是为什么我担心我可能不明白你的问题是什么。

如果你在HTML5表单验证中处理正则表达式,并且输入的模式属性比一个精确的字符串更复杂,那么另一个解决方案如下(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"))
相关文章: