javascript - 如何在javascript中不匹配某个正则表达式?

标签 javascript regex interpreter

我想检查变量是否与此正则表达式不匹配:

DEMO

所以这是与我的代码中的正则表达式匹配的模式:

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/

相关文章:

c# - 使用正则表达式解析字符串的第二个数字组合

c++ - 在 C/C++ 中实现解释器所需的引用资料

javascript - 垂直滚动条适用于 chrome 但不显示

Javascript - 在一行中评估多个正则表达式

javascript - Jquery Ajax,缺失;声明之前

regex - GitLab 代码覆盖率徽章未显示

c++ - 与编译器相比,为什么调试器在发生错误时更加具体?

python - 模块导入适用于解释器,但不适用于脚本

javascript - 为什么 fs.writeFileSync() 会抛出 "is not a function"错误?

javascript - 原始 javascript 日期到 VB.net 日期时间