JavaScript 如何创建只接受特殊公式的正则表达式
正则表达式是一种包含各种字符的模式。我们可以使用正则表达式来搜索一个字符串是否包含一个特定的模式。
在这里,我们将学习如何创建一个正则表达式来验证各种数学公式。我们将使用 test() 或 match() 方法来检查特定的数学公式是否与正则表达式匹配。
语法
用户可以按照下面的语法来创建接受特殊数学公式的正则表达式。
let regex = /^\d+([-+]\d+)*$/g;
上述正则表达式只接受10 – 13 + 12 + 23,就像数学公式一样。
正则表达式的解释
/ /
- 它代表正则表达式的开始和结束。-
^
- 它代表公式字符串的开始。 -
\d+
- 它代表公式开头的至少一个或多个数字。 -
[-+]
– 它代表正则表达式中的’+’和’-‘运算符。 -
([-+] \d+ )*
- 它表示公式中可以包含多次’+’或’-‘运算符后的数字。 -
$
- 它代表字符串的结束。 -
g
– 它是一个标识符,用于匹配所有出现的内容。
例子
在下面的例子中,我们创建了一个正则表达式,接受含有’+’或’-‘运算符的数字的公式。
用户可以观察到,第一个公式与输出的正则模式相匹配。第二个公式与正则模式不匹配,因为它包含*
运算符。另外,第三个公式与第一个公式相同,但它在操作符和数字之间包含空格,所以它不与正则表达式匹配。
<html>
<body>
<h3>Creating the regular expression to validate special mathematical formula in JavaScript</h3>
<div id = "output"></div>
<script>
let output = document.getElementById('output');
function matchFormula(formula) {
let regex = /^\d+([-+]\d+)*$/g;
let isMatch = regex.test(formula);
if (isMatch) {
output.innerHTML += "The " + formula + " is matching with " + regex + "<br>";
} else {
output.innerHTML += "The " + formula + " is not matching with " + regex + "<br>";
}
}
let formula = "10+20-30-50";
matchFormula(formula);
matchFormula("60*70*80");
matchFormula("10 + 20 - 30 - 50")
</script>
</body>
</html>
下面的例子中使用的正则表达式
我们在下面的例子中使用了/^\d+(\s[-+/]\s\d+)$/g正则表达式。用户可以在下面找到对所用正则表达式的解释。
^\d+
- 它表示在公式的开始部分至少有一个数字。-
\s*
- 它代表零或更多的空白。 -
( \s* [-+*/] \s*\d+ )*
- 它表示公式中可以包含空格、运算符、空格和数字,并以同一顺序 多次出现。
例子
在下面的例子中,我们通过传递各种公式作为参数,调用了TestMultiplyFormula()函数三次。我们使用test()方法来检查公式是否与正则表达式模式匹配。
在输出中,我们可以看到正则表达式接受带有*
和/
运算符以及空白的公式。
<html>
<body>
<h2>Creating the regular expression <i> to validate special mathematical formula </i> in JavaScript.</h2>
<div id = "output"> </div>
<script>
let output = document.getElementById('output');
function TestMultiplyFormula(formula) {
let regex = /^\d+(\s*[-+*/]\s*\d+)*$/g;
let isMatch = regex.test(formula);
if (isMatch) {
output.innerHTML += "The " + formula + " is matching with " + regex + "<br>";
} else {
output.innerHTML += "The " + formula + " is not matching with " + regex + "<br>";
}
}
let formula = "12312323+454+ 565 - 09 * 23";
TestMultiplyFormula(formula);
TestMultiplyFormula("41*14* 90 *80* 70 + 90");
TestMultiplyFormula("41*14& 90 ^80* 70 + 90");
</script>
</body>
</html>
本教程教我们如何创建一个接受特殊数学公式的正则表达式。在这两个例子中,我们都使用了 test() 方法来与正则表达式匹配。此外,我们在两个例子中都使用了不同的正则表达式模式。