jQuery Regex过滤数据

时间:2012-11-28 03:52:45

标签: javascript jquery regex json

我有这个字符串

  

[111]测试队+3½-110

而我的预期是这个

团队:测试团队, 下注:+3½-110

我怎么能在jquery中做到这一点?

TIA

2 个答案:

答案 0 :(得分:2)

你不会为此使用jQuery(" json"标签也不合适),你使用标准的JS字符串操作函数(有或没有正则表达式)。

我假设分割字符串的规则是忽略方括号中的任何前导值,然后将+作为团队名称和+之后的所有内容。 (包括+本身)作为赌注。如果有多个+,则除了最后一个之外的所有内容都将被视为团队名称的一部分。

function formatBet(input) {
    return input.replace(/^(\[[^\]]*\] )?(.+)( \+[^+]+)$/,"team: $2, bet:$3");
}

console.log(formatBet("[111] Test Team +3½-110"));
     // logs "team: Test Team, bet: +3½-110"
console.log(formatBet("Test Team +3½-110"));   
     // logs "team: Test Team, bet: +3½-110"
console.log(formatBet("[111] Test + Team +3½-110"));
     // logs "team: Test + Team, bet: +3½-110"
console.log(formatBet("[111] Whatever +3½-110"));
     // logs "team: Whatever, bet: +3½-110"

演示:http://jsfiddle.net/LKJjw/

在我的正则表达式中:

^(\[[^\]]*\] )?

...可选地匹配字符串开头的[后跟零个或多个非]个字符,后跟]和一个空格。然后:

(.+)

...匹配团队名称 - 任何一个或多个角色。然后:

( \+[^+]+)$

...匹配空格后跟+,后跟字符串末尾的一个或多个非+字符。

答案 1 :(得分:0)

var str = '[111] Test Team +3½-110';
str.replace('[111] Test Team','team : Test Team, bet :');
相关问题