有没有不同的方法来构建这样的正则表达式...
/^52\s*quarts(\s*\,*\s*|\s+)motor oil(\s*\,*\s*|\s+)las vegas(\s*\,*\s*|\s+)nv/i
...这样,“52夸脱机油”所返回的匹配将是 [“52夸脱机油拉斯维加斯”] ?
我正在尝试将缓存添加到jQuery自动完成的使用中,并且我想将用户输入与正则表达式的准备列表进行动态匹配。因为我需要事先准备匹配的表达式,所以它们不能因为它们比完成的用户输入字符串更长而不匹配!
答案 0 :(得分:0)
我简化了你的正则表达式:
/^52[\s,]*quarts[\s,]*motor oil[\s,]*las vegas[\s,]*nv/i
如果你想以任何顺序允许单词,你可以使用前瞻:
/^(?=.*52)(?=.*quarts)(?=.*motor oil)(?=.*las vegas)(?=.*nv)/i
这种前瞻性的想法非常接近基于文本的搜索引擎的工作方式
部分比赛变得有点难看。以下是您在单词的任何部分上的匹配方式 - 换句话说就是“开始时”匹配:
l(a(s( (v(e(g(a(s)?)?)?)?)?)?)?)?
要求至少“拉斯维加斯”,请执行以下操作:
las ve(g(a(s)?)?)?
这非常糟糕。但它确实存在。
您可以使用所有条款执行此操作。