【问题标题】:Find in a string a comma followed by a space and then a number在字符串中查找逗号,后跟空格,然后是数字
【发布时间】:2013-10-25 20:41:45
【问题描述】:

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

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>");

这是行不通的,但如果有人能指出我正确的方向,那就太好了。

【问题讨论】:

  • 您想找出字符串中的最后一个逗号吗?
  • 感谢您的回复,理论上不,我只希望最后一个逗号后跟日期......这可能是不可能的。
  • 但是为什么 2004 年是一个日期呢?

标签: javascript jquery regex string split


【解决方案1】:

尝试使用这种模式:

/, (?=\d)/

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

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

您可以像这样在拆分函数中简单地使用它:

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

如果你想确保它后面跟着一个看起来像 4 位数的年份,你可以使用:

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

或者

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

取决于您的具体需求。

【讨论】:

  • 根据 OP I want the last comma only if it's followed by a date 我知道 2004 年不是日期
  • 如何将其添加到拆分功能?谢谢
【解决方案2】:

为了清晰和内联解释而写成多行。

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 &lt; 2099) &amp;&amp; (num &gt; 1990)(只是一个例子)并使用条件来做特定的事情

【讨论】:

  • 你能告诉我这个 - 我会检查它是否有效谢谢!
  • 请注意,这仅在年份出现在最后一个逗号之后才有效。鉴于 OP 的 cmets,我认为这不是所希望的,但它可能已经足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
相关资源
最近更新 更多