如何使用jQuery正则表达式拆分以竖线符号分隔的字符串

7
我有一个动态生成的字符串,基本上是一行,每个值都用竖线符号|分隔,我需要把它们分开并插入到一堆隐藏字段中。 这几乎就是我需要做的事情,但对我无效,而且我只能使用(~|)作为特殊字符,因为我的数据可能包含其他字符。
以下是我的代码:
var data = "Val1@#|val2$%|val3(*|"; // dynamically generated 

$.each(data.split(/\s*|\s+/), function(i, val) {
    alert(val);
});

3
为什么不直接使用Data.split('|')呢?这将为您提供一个值数组(并且最后一个值为空字符串,因为您的字符串以“|”结尾)。 - Daniël Knippers
没关系,我不需要使用正则表达式,但我想学习正则表达式,这只是一个愿望,但无论如何都需要解决问题 :-(。 - Amarnath R Shenoy
1
@AmarnathRShenoy 如果你想学习,从REGEXONE开始。 - aelor
2
在正则表达式中像 Aziz Shaikh 的答案那样转义 | - A. Wolff
4个回答

9

使用以下内容:

var Data ="Val1@#|val2$%|val3(*|" //dynamically generated 
alert(Data);
$.each(Data.split(/\|/), function (i, val) {
     alert(val);
})

Working Fiddle: http://jsfiddle.net/nLdcr/


each 中的第二个参数是一个 function,这是什么意思? - aelor
谢谢兄弟,这正是我在寻找的 :D - Amarnath R Shenoy
@MrX 第四个空值是因为输入的末尾包含“|”。请使用此更新后的fiddle以避免空值:http://jsfiddle.net/nLdcr/1/ - Aziz Shaikh

7

"Val1@#|val2$%|val3(*|".split('|') 正常运作。没有必要使用正则表达式。
相应的,使用正则表达式的代码是:.split(/\|/)


谢谢,这属于正则表达式吗? - Amarnath R Shenoy
2
@AmarnathRShenoy 伙计,你为什么要用宝剑杀一只苍蝇? - aelor
4
用剑杀苍蝇其实相当惊人。 - musefan

6

无需使用正则表达式:

var list = Data.split("|");

0
如果您使用 | 分隔字符串,您可以使用 JavaScript 的普通 string.split() 函数。这并不需要使用正则表达式。
HTML:
<div id="result"></div>

代码:

var data = "Val1@#|val2$%|val3(*|";

$.each(data.split('|'), function(key, value){
    $('#result').append(value).append('<br/>');
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接