我有一些文本正在尝试使用正则表达式。我需要在用阿拉伯文本包围的带有%符号的数字上进行匹配。我有一些正则表达式如下所示:
const re1 = new RegExp('\d*,\d*%');
const re2 = new RegExp('%\d*,\d*');
我有一些文本看起来像这样:
%9,2 ملمول/مول 77 أو
我希望第二个正则表达式与文本匹配,但它是第一个与文本匹配的正则表达式。我确信这是有充分理由的,但我在文档中没有看到任何关于这一点的内容。它为什么要这样做?将数字与阿拉伯文本中嵌入的百分号匹配的正确方法是什么?
我希望第二个正则表达式与文本匹配
这正是发生的事情:
const re1 = new RegExp('\d*,\d*%');
const re2 = new RegExp('%\d*,\d*');
const str = '%9,2 ملمول/مول 77 أو'
console.log(re1, str.match(re1))
console.log(re2, str.match(re2))
这适用于我的机器(MacOs,美国文化(,运行Node.js v14.19.3:
const corpus = '%9,2 ملمول/مول 77 أو ';
const rx = /%(d+),(d+)/ ;
const m = rx.exec(corpus);
if (!m) {
console.log("no match found");
} else {
const [ match, value1, value2 ] = m;
console.log(`entire match: «${match}»` );
console.log(`1st value: «${value1}»` );
console.log(`2nd value: «${value2}»` );
}
运行以上收益率:
entire match: «%9,2»
1st value: «9»
2nd value: «2»