Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在JS中是否可以定义regexp,在输入结束时对给定文本进行测试时会给出false?_Javascript_Regex_Pattern Matching - Fatal编程技术网

Javascript 在JS中是否可以定义regexp,在输入结束时对给定文本进行测试时会给出false?

Javascript 在JS中是否可以定义regexp,在输入结束时对给定文本进行测试时会给出false?,javascript,regex,pattern-matching,Javascript,Regex,Pattern Matching,我需要一个JS中的regexp模式,在输入结束时对给定文本进行测试时,该模式会给出false。 例如: /(?!not this text)$/.test("blablabla not this text") === false /(?!not this text)$/.test("blablabla this text") === true 但是那样不行!以下是一些实验: console.log("<expected>: <actual>"); console

我需要一个JS中的regexp模式,在输入结束时对给定文本进行测试时,该模式会给出false。 例如:

/(?!not this text)$/.test("blablabla not this text") === false
/(?!not this text)$/.test("blablabla     this text") === true
但是那样不行!以下是一些实验:

console.log("<expected>: <actual>");
console.log("false:"  + /^(?!<asd>)/.test("<asd>"));
console.log("true:"   + /^(?!<asd>)/.test("<asg>"));
console.log("false:"  + /(?!<asd>)$/.test("<asd>"));
console.log("true:"   + /(?!<asd>)$/.test("<asg>"));
console.log("false:"  + /(<asd>){0}$/.test("<asd>"));
console.log("true:"   + /(<asd>){0}$/.test("<asg>"));
console.log(“:”);
log(“false:+/^(?!)/.test(“”));
log(“true:+/^(?!)/.test(”));
log(“false:+/(?!)$/.test(“”));
log(“true:+/(?!)$/.test(“”));
log(“false:”+/(){0}$/.test(“”));
log(“true:”+/(){0}$/.test(“”));
给出输出:

<expected>: <actual>
false:false
true:true
false:true
true:true
false:true
true:true
:
假:假
真的:真的
假:真
真的:真的
假:真
真的:真的
问题: 在JS中,是否可以定义在输入结束时对给定文本进行测试时给出false的regexp?

是的,可能:

/^(?:(?!not this text$).)*$/
请注意,正则表达式必须锚定在两端,前瞻子表达式必须锚定在末尾,而不是开头

另一种方法是:

/^(?!.*not this text$).*$/

同样,正则表达式作为一个整体必须锚定在两端才能工作。

如果这是唯一的测试,只需:

if (!/not this text$/.test(str)); 

谢谢我想,这个解决方案并不直观。我已经测试过了,第一个失败了,第二个没问题。他们都为我工作。目标字符串是否包含换行符?如果是这样,您应该使用
[\s\s]
而不是