用例
准备一个可以匹配1到2个单词的正则表达式' sell | sold | sell'并匹配变量" product"
示例
Sentence - "John wants to sell 200$ XYZ laptop and buy ABC PC"
if product = "ABC" , then it should not match
If product = "XYZ" , then it should match
我做了什么(javascript)
var desc = "John wants to sell 200$ XYZ laptop and buy ABC PC"
var product = "ABC"
var reg_s="sell\|selling\|sold (.*)" + product;
var re_s= new RegExp(reg_s,'gi');
var sell = desc.match(re_s);
在上面的代码中,' sell'之后的整个字符串。正在匹配 - 但它应该 不符合ABC。只需匹配那些出现1,2个字的产品 售后|卖|卖。例如:product = XYZ应匹配
我是正则表达式的新手并且学习相同的东西。需要你的建议。
答案 0 :(得分:2)
正则表达式中的(.*)
段确实与字符串的其余部分匹配,因为.
基本上表示任何字符。如果您只想获得接下来的两个“单词”,则需要使用以下内容限制捕获:
(\S+)\s*(\S*)
这将为您提供两个捕获组,每个捕获组对应于固定字符串后面的每个(最多)两个单词。
此外,我建议使用以下内容作为基线:
var desc = "John wants to sell 200$ XYZ laptop and buy ABC PC";
var product = "ABC";
var reg_s="(sell|sold|selling)\\s+(\\S*\\s*\\S*)";
var re_s= new RegExp(reg_s,'gi');
var sell = re_s.exec(desc);
alert(sell[2]);
这为您提供了一个实际的捕获组数组,而string.match
给您的数组将是一个字符串数组,而不会拆分各个捕获组。