繁体   English   中英

正则表达式拆分和匹配

[英]Regular Expression Split and match

我正在学习如何使用正则表达式,并有些困惑,希望有人可以澄清一下。如果使用以下字符串和表达式,我将获得匹配的预期结果,但如果使用split,则正好相反。 撞墙撞我不明白为什么?

var a = "212,0,,456,,0,67889";
var patt = /,\d{1,5},/gmi;

pos=a.match(patt);
alert(pos);// returns ,0, ,456, and ,0,

pos=a.split(patt);
alert(pos); //returns 212, and ,67889

连续的拆分将被忽略,因此您将得到与正则表达式不匹配的两个字符串。

您可以使用split或match实现相同的功能,但需要不同的正则表达式。 例如,您可以使用match:

\d+

工作演示

var re = /\d+/g; 
var str = '212,0,,456,,0,67889';
var m;

while ((m = re.exec(str)) !== null) {
    if (m.index === re.lastIndex) {
        re.lastIndex++;
    }
    // View your result using the m-variable.
    // eg m[0] etc.
}

或者,您可以使用此正则表达式进行拆分:

,+

工作演示

拆分意味着在字符串上查找模式的匹配项,并在每次看到匹配项时拆分该字符串。 同时删除找到的每个匹配项。

此链接提供了一些很好的示例: http : //www.tizag.com/javascriptT/javascript-string-split.php

“〜分隔符将分隔符用作分割字符串的一种方式。每次看到我们指定的分隔符时,它将在数组中创建一个新元素。分隔函数的第一个参数是分隔符。” (定界符是模式)

范例一:

 <script type="text/javascript">
    var myString = "123456789";

    var mySplitResult = myString.split("5");

    document.write("The first element is " + mySplitResult[0]); 
    document.write("<br /> The second element is  " + mySplitResult[1]); 
    </script>

输出:

The first element is 1234
The second element is 6789

“请确保您意识到,因为我们选择了5作为分隔符,所以它不在我们的结果中。这是因为从字符串中删除了分隔符,并且其余字符被5占用的空格所分隔”。

示例二:

<script type="text/javascript">
var myString = "zero one two three four";

var mySplitResult = myString.split(" ");

for(i = 0; i < mySplitResult.length; i++){
    document.write("<br /> Element " + i + " = " + mySplitResult[i]); 
}
</script>

输出:

Element 0 = zero
Element 1 = one
Element 2 = two
Element 3 = three
Element 4 = four

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM