在字符串中查找逗号,后跟空格,然后是数字

时间:2013-10-25 20:41:46

标签: javascript jquery regex string split

我有一个包含此格式的字符串

Item 1, Item 2, Another Item,2004”

我想在2004年拆分字符串并将其格式化为显示

<em>Item 1, Item 2, Another Item</em>,2004”

到目前为止,我有这个

          var myString = "";
          var new_html = [];
          var splitstring = this.split(',');
               $.each(splitstring, function (idx) {
                   if (new_html.length == 0) new_html.push('<em>' + splitstring[idx] + '</em>');
                   else new_html.push(splitstring[idx]);
               });
                    myString+=("<span class='line"+index+"'>"+new_html.join(',') + "<br/></span>");

这不会起作用,但如果有人可以指出我的方向很好。

2 个答案:

答案 0 :(得分:3)

尝试使用此模式:

/, (?=\d)/

这将匹配一个逗号,后跟一个空格,但前后跟一个数字。

(?=...)是一个先行断言。它确保括号内的模式出现在匹配的子字符串之后,但它不包含在匹配中。

您可以在分割函数中使用它,如下所示:

var splitstring = this.split(/, (?=\d)/);
...

如果你想确保它后面跟着你可以使用的4位数的东西:

/, (?=\d{4})/

或者

/, (?=(?:19|20)\d\d)/

取决于您的确切需求。

答案 1 :(得分:1)

为了清晰起见,写了多行&amp;内联解释。

var str = "Item 1, Item 2, Another Item, 2004"; 

var arr = str.split(','); //splitting by commas

var num = arr.pop(); //popping the last value '2004'

var result = '<em>'+ arr.join(',') + '</em>' + ',' + num; //joining back again

result: "<em>Item 1, Item 2, Another Item</em>, 2004"

如果num是一年,您可以检查为(num < 2099) && (num > 1990)(仅作为示例)并使用条件来执行特定的操作