gpt4 book ai didi

javascript - 如何在javascript中匹配这个正则表达式

转载 作者:行者123 更新时间:2023-11-30 13:40:44 24 4
gpt4 key购买 nike

我正试图找到一种方法来解决这个问题,但我迷路了

我希望它匹配一个接受字符串的数学方程式,如果:

  • "+-*/%"在字符串中的任何位置,但不在输入字符串的最后一个字符中
  • 它接受 float 和整数
  • 它不接受字母,只接受数字和符号

有什么帮助吗?

提前致谢!!

最佳答案

您要查找的正则表达式如下所示:

-?\d+(?:\.\d+)?([*/%+-]-?\d+(?:\.\d+)?)+

基本上这意味着:

NUMBER (OPER NUMBER)*

数字定义为:

  • 可选减号;
  • 一个或多个数字;
  • 可以选择一个句点后跟一位或多位数字。

现在领先的可选减号并不严格符合您的要求,因此您可以安全地删除它但没有它您将无法识别:

-3*-4

这违反了两个操作数在一起的条件。要删除它,只需从表达式中删除 -? (在两个地方)即:

\d+(?:\.\d+)?([*/%+-]\d+(?:\.\d+)?)+

也不清楚您是想接受多个操作数还是只接受一个。如果只有一个,那么:

-?\d+(?:\.\d+)?[*/%+-]-?\d+(?:\.\d+)?

\d+(?:\.\d+)?[*/%+-]\d+(?:\.\d+)?

或允许空格的变体 (\s)。您可能还想使用括号来捕获组。

您可能想要更改该定义。

您还可以考虑在数字和操作数之间留出空格。

用法示例:

var s = "-11.32 * -34";
var r = /(-?\d+(?:\.\d+)?)\s*([*/%+-])\s*(-?\d+(?:\.\d+)?)/;
var m = r.exec(s);
if (m != null) {
alert("First: " + m[1] + "\nOperand: " + m[2] + "\nSecond: " + m[3]);
} else {
alert("Not found");
}

关于javascript - 如何在javascript中匹配这个正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2421770/

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