所以说到正则表达式我javascript,我只知道1%左右。
我正在尝试编写一些代码来检测数学表达式(例如 2 + 3)。前段时间我在另一个问题上发现了这个:
/(?:(?:^|[-+_*/])(?:\s*-?\d+(\.\d+)?(?:[eE][+-]?\d+)?\s*))+$/I
这似乎工作正常,但我只希望它在前面有特定关键字时工作。
所以现在我有这样的东西:
var re = /(?:(?:^|[-+_*/])(?:\s*-?\d+(\.\d+)?(?:[eE][+-]?\d+)?\s*))+$/i;
var str = "2 + 2";
console.log(str.match(re));
但我想要这个:
var keyword = "Some keyword ";
var str = `${keyword}2 + 2`;
//Regular expressio that should only work if "Some keyword" and math expression are there
var re = //the expression
//should match the string
console.log(str.match(re));
//But if the keiword is not there
var keyword = "";
var str = `${keyword}2 + 2`;
//Regular expressio that should only work if "Some keyword" and math expression are there
var re = //the expression
//should NOT match the string
console.log(str.match(re));
我试过这个,但它并没有真正达到我的预期:
var one = /Some keyword /i;
var two = /(?:(?:^|[-+_*/])(?:\s*-?\d+(\.\d+)?(?:[eE][+-]?\d+)?\s*))+$/i;
var one_or_two = new RegExp("(" + one.source + ")?(" + two.source + ")")
var str = "Some keyword 2 + 1";
alert(str.match(one_or_two))
我需要在正则表达式中使用所有这些,因为我不能使用 str.match(re)
有没有办法做到这一点?
无论如何提前感谢。
30秒到达战场
相关分类