我想检查变量是否与此正则表达式不匹配:
所以这是与我的代码中的正则表达式匹配的模式:
rxAfterPrint = new RegExp(/^ *\+ *("(?:[^"]*)"|(?:[a-zA-Z]\w*)) *(.*)$/);
通过这种方式我检查匹配:
var t2 = t[2].match(rxAfterPrint);
现在我想创建与此模式不匹配的变量t3
我该怎么做?你能帮我吗?
最佳答案
(承认我有不公平的优势,因为我知道为什么会出现这个问题:How can I interpret strings in textarea with JavaScript/jQuery?)
所以我的猜测是您希望将字符串连接实现为打印语句的一部分,如下所示:
<string> ::= '"' <character>* '"' | <variable>
<print> ::= 'print' <string> ('+' <string>)*
<print> ::= 'print' (<string> '+')* <string>
两个<print>
实际上表达相同,使用第二个版本,您可以首先(在匹配 /^ *print */
后)尝试应用模式 rxConcat
尽可能多次,如果不匹配,则应用第二个表达式 rxStringValEOL
匹配其余部分(如果不成功,则为无效语句):
rxConcat = new RegExp(/ *(?:"([^"]*)"|([a-zA-Z]\w*)) *\+ */);
rxStringValEOL = new RegExp(/ *(?:"([^"]*)"|([a-zA-Z]\w*)) *$/);
这也表明,设计一种对程序员和编写编译器的人来说都很容易的语言是相当困难的。
关于javascript - 如何在javascript中不匹配某个正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30009235/