用于javascript if条件中稍微不同的字符串的Regexp

用于javascript if条件中稍微不同的字符串的Regexp,javascript,regex,Javascript,Regex,所以我在循环这个问题,这应该是相对容易的,问题是我有一些来自数据库的不同字符串: 本田VIP…、本田LL Ultra…、本田LL…、本田LL start 5000i、本田LL Ultra 5000i 如果字符串是(Honda VIP…、Honda LL Ultra…、Honda LL…),我将显示image1.svg 或者我展示了image2.svg,它就是我们所展示的图像(Honda LL start 5000i,Honda LL ultra 5000i) 我的代码是: ... else i

所以我在循环这个问题,这应该是相对容易的,问题是我有一些来自数据库的不同字符串:

本田VIP…、本田LL Ultra…、本田LL…、本田LL start 5000i、本田LL Ultra 5000i

如果字符串是(Honda VIP…、Honda LL Ultra…、Honda LL…),我将显示image1.svg 或者我展示了image2.svg,它就是我们所展示的图像(Honda LL start 5000i,Honda LL ultra 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';
但回报总是image1,因为如果落在“本田LL”或“本田LL ultra”中。我尝试在第二个else的空白处使用\s+,如果:

panel.match(/Honda LL\s+start\s+5000i|Honda LL\s+ultra\s+5000i/i)
但没有结果

有人能帮我吗?

不管这种语言是什么,看起来第一个正则表达式末尾的
本田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';
不管这种语言是什么,第一个正则表达式末尾的
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';

顺便问一下,我们可以让一个regexp以一些字符串开头,然后在前面加上变体吗?我在努力

} 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’那样击球,它就会被击中,但它不应该被击中,因为它不是从本田开始的

顺便问一下,我们可以让一个regexp以一些字符串开头,然后在前面加上变体吗?我在努力

} 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’那样击球,它就会被击中,但它不应该被击中,因为它不是从本田开始的

这是因为他们总是在第一个正则表达式中匹配最终的
Honda LL
?如果是这种情况,请尝试交换条件。这不是Java代码!你是说JavaScript吗?天哪对不起。。我的错我试过交换条件,但没有效果。这是因为它们总是匹配第一个正则表达式中的最终
Honda LL
?如果是这种情况,请尝试交换条件。这不是Java代码!你是说JavaScript吗?天哪对不起。。我的错我试着改变条件,但没有效果..或者让它完全匹配:
panel.match(/^(本田VIP |本田LL Ultra |本田LL)$/i)
@Andreas或者停止使用正则表达式,然后使用,比如说,一个开关(不过,在不敏感的情况下更难做到)。嗯,我看到“本田LL”得到了所有的条件,因为它落在那里。。但是我可以搜索一些以start 5000i或ultra 5000i结尾的字符串,然后归入image2吗?@Andy Turne我无法更改基本代码。。如果条件允许的话,还有很多其他的。。(但与其他品牌不同)@Bruno如果你不能更改代码,那么我不确定你希望你能做什么。或者让它完全匹配:
panel.match(/^(Honda VIP | Honda LL Ultra | Honda LL)$/I)
@Andreas或停止使用正则表达式,然后使用,比如说,一个开关(不过在不敏感的情况下更难做到)。嗯,我看到了“Honda LL”得到了所有的条件,因为它落在那里。。但是我可以搜索一些以start 5000i或ultra 5000i结尾的字符串,然后归入image2吗?@Andy Turne我无法更改基本代码。。如果条件允许的话,还有很多其他的。。(但与其他品牌不同…)@Bruno如果你不能更改代码,那么我不确定你希望你能做什么。