JavaScript 正则表达式否定精确的字符串匹配

Mat*_*usz 2 html javascript regex validation

HTML (JavaScript) 中有没有办法编写正则表达式来否定精确的字符串匹配?

我想确保输入不等于“ foo”。只有“ foo”必须验证失败,但fooo必须允许“ ”。

换句话说,我正在寻找这个正则表达式的否定:

<input pattern="^foo$" ...>

rai*_*7ow 5

一种可能的方法是将字符串锚点 ( ^) 的开头与包含目标字符串和字符串锚点结尾( ) 的负先行组合起来$

/^(?!foo$)/
Run Code Online (Sandbox Code Playgroud)

演示

但是pattern模式在那个帐户中很有趣 - 它必须匹配字符串中的某些内容,这就是原始方法不起作用的原因。但是,这确实有效:

<input pattern="(?!foo$).*">
Run Code Online (Sandbox Code Playgroud)