在javascript if条件中为稍微不同的字符串进行Regexp



所以我正在处理这个问题,这应该相对容易,问题是我有来自数据库的稍微不同的字符串:

本田VIP。。。,本田LL超。。。,本田LL。。。,本田LL启动5000i,本田LL超5000i

如果字符串是(Honda VIP…,Honda LL Ultra…,HondaLL…(或者我现在的图像2.svg是来的图像正是(本田LL启动5000i,本田LL超5000i(

我的代码是:

...
else if (panel.match(/Honda VIP|Honda LL Ultra|Honda LL/i)) {
return 'asset/image1.svg';
else if (panel.match(/Honda LL start 5000i|Honda LL ultra 5000i/i))
return 'asset/image2.svg';

但回报总是图像1,因为如果落在"本田LL"或"本田LL ultra"。我试着在第二个else if的空白处使用\s+:

panel.match(/Honda LLs+starts+5000i|Honda LLs+ultras+5000i/i)

但没有结果。

有人能帮我吗?

无论这种语言是,第一个正则表达式末尾的Honda LL似乎与第二个正则表达式匹配的所有内容都匹配。

交换条件,以便首先匹配更具体的模式:

else if (panel.match(/Honda LL start 5000i|Honda LL ultra 5000i/i))
return 'asset/image2.svg';
else if (panel.match(/Honda VIP|Honda LL Ultra|Honda LL/i)) {
return 'asset/image1.svg';

顺便问一下,我们可以用一个正则表达式以一些字符串开头,然后在前面有变体吗?我在试

} else if (panel.match(/^(Honda|.*B16|B18|B20|Vtec)$/i)) {
return 'image.svg';

就像我想抓住从本田B16、本田B16或本田B18开始的字符串一样。。我的代码甚至没有被击中。但是/^/$不应该工作并捕获第一个字符串,然后检查其他字符串吗?

我试过

} else if (panel.match(/^(Honda)$.*B16|B18|B20|Vtec/i)) {
return 'image.svg';

但如果我像"CRX B16"那样击球,它会被击中,但不应该,因为它不是从本田开始的。。。

相关内容

  • 没有找到相关文章

最新更新