gpt4 book ai didi

javascript - DNF 函数模式(javascript 正则表达式)

转载 作者:行者123 更新时间:2023-11-30 05:59:05 28 4
gpt4 key购买 nike

我想验证看起来像这样的 DNF(析取范式)A*B+A'*C+C*D*E'。为此,我使用以下模式:

/[A-Z]'?(\*[A-Z]'?)*(\+[A-Z]'?(\*[A-Z]'?)*)+/g

我已经在这个在线工具中使用 javascript test() 方法测试了这个模式: http://www.pagecolumn.com/tool/regtest.htm它给了我预期的结果。

我尝试使用 javascript 测试模式,使用以下代码:

  <script type="text/javascript">
var dnf="A*3+A*B+CD";
var pattern= /[A-Z]'?(\*[A-Z]'?)*(\+[A-Z]'?(\*[A-Z]'?)*)+/g;
var flag = false;
flag=pattern.test(dnf);
console.log(flag);
</script>

问题是,我不明白,为什么标志(在此代码中)变为“真”,而必须为“假”,因为 dnf="A* 中的术语 A*3 和 CD 3+A*B+CD”.

我已经在在线测试器中对此进行了测试,它说:没有匹配项,我认为是正确的。

最佳答案

您没有指定匹配必须从字符串的开头开始或在字符串的结尾结束。因此,如果子字符串匹配,模式测试将返回 true。在这种情况下,看起来 A*B+C(原始字符串的子字符串)将匹配该模式。

要修复,要求整个字符串匹配,使用 ^$:

var pattern= /^[A-Z]'?(\*[A-Z]'?)*(\+[A-Z]'?(\*[A-Z]'?)*)+$/;

请注意,g 标志在此上下文中不再有任何意义,因为您只能匹配一个。

关于javascript - DNF 函数模式(javascript 正则表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9911667/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com