2014-12-06 35 views
1

我有一个字符串,需要测试是否包含多个定义的单词。如何测试字符串是否按顺序包含多个定义的单词?

例如预定义的词是:["one", "two", "three"]

所以用绳子:"one two three"应该返回true,但有一个字符串:"three two one"应该返回false。

我现在的正则表达式看起来像这样:new RegExp('\\bone\\b\\two\\b\\three\\b')

不幸的是这只是检查,如果字是存在的,但不关心,如果他们是在正确的顺序。

+1

您的正则表达式_does_关心订单。但它不处理中间的单词以及检查单词之前/之后的单词。 下面是解决方案:'new RegExp('。* \\ bone \\ b。* \\ btwo \\ b。* \\ bthree \\ b。*')'。或者是动态的:'new RegExp('。* \\ b'+ arr.join('\\ b。* \\ b')+'\\ b。*')' – 2014-12-06 13:55:34

+0

好的,谢谢。通过数组连接获得更多可维护代码的 – crispychicken 2014-12-06 14:03:30

回答

4

你可以使用这个表达式

var arr = ["one", "two", "three"]; 
var regex = new RegExp(arr.join(".*")); 

arr.join(".*")将正则表达式/one.*two.*three/

+2

+ 1。 – blex 2014-12-06 14:03:03

2

您可以使用下面的正则表达式。

var re = /one.*two.*three/ 

例子:

re.test('one two three'); // true 
re.test('three two one'); // false 
+0

嘿,你可以为http://regexdoc.com/re/explain.pl?re=Hi%3F&.submit=Explain%21&mode=SO&.cgifields=mode做一个扩展程序吗? – 2014-12-06 14:02:41

+0

@AmitJoki是的,它实际上正在完成。 – hwnd 2014-12-06 14:03:37

+1

太棒了!通过ping我来告诉我 – 2014-12-06 14:04:24

0

先生,请检查这些有什么错误。我无法弄清楚这一点。代码不会弹出。

这是弹出式单击。

<li><a href="#"><i class="icon-envelope icon-2x" onClick="click();"></i></a></li> 

这里是javascript代码。

<script type="text/javascript" src="//www.klaviyo.com/media/js/public/klaviyo_subscribe.js"></script> 

    <script type="text/javascript"> 
    $(document).ready(function(){ 
    $('icon-envelope icon-2x').on('click',function(){ 
    KlaviyoSubscribe.attachModalSignUp({ 
     list: 'g9cZtX', 
     delay_seconds: 0.5, 
     content: { 
      clazz: ' klaviyo_modal_g9cZtX', 
      header: "Interested in our Newsletter?", 
      subheader: "Stay in the know with news and promotions.", 
      button: "Subscribe", 
      success: "Thanks! Check your email for a confirmation.", 
      styles: '.klaviyo_modal.klaviyo_modal_g9cZtX { font-family: "Helvetica Neue", Arial}.klaviyo_modal.klaviyo_modal_g9cZtX .klaviyo_header { color:#222;}.klaviyo_modal.klaviyo_modal_g9cZtX .klaviyo_subheader { color:#222;}.klaviyo_modal.klaviyo_modal_g9cZtX .klaviyo_submit_button,.klaviyo_modal.klaviyo_modal_g9cZtX .klaviyo_submit_button span { background-color:#07234F; background-image: none; border-radius: 2px;}.klaviyo_modal.klaviyo_modal_g9cZtX .klaviyo_submit_button:hover,.klaviyo_modal.klaviyo_modal_g9cZtX .klaviyo_submit_button span:hover { background-color:#2A4D85; background-image: none; }.klaviyo_modal.klaviyo_modal_g9cZtX .klaviyo_inner,.klaviyo_modal.klaviyo_modal_g9cZtX .klaviyo_fieldset .klaviyo_field_group input[type=text],.klaviyo_modal.klaviyo_modal_g9cZtX .klaviyo_fieldset .klaviyo_field_group input[type=email] { border-radius: 2px;}' 
     } 
    }); 
}); 
}); 
    </script> 
相关问题