我正在学习如何使用正则表达式并且有点困惑的东西希望有人可以澄清,如果我使用下面的字符串和表达式我得到匹配的预期结果但是如果我使用拆分则完全相反。把头撞到墙上我不明白为什么?
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
答案 0 :(得分:1)
忽略连续拆分,因此您只是获得了与正则表达式不匹配的两个字符串。
答案 1 :(得分:1)
您可以使用拆分或匹配来实现相同,但您需要不同的正则表达式。例如,您可以使用匹配:
\d+
<强> Working demo 强>
代码
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.
}
或者您可以使用此正则表达式进行拆分:
,+
<强> Working demo 强>
答案 2 :(得分:1)
拆分意味着,查找字符串上的模式匹配,并在每次看到匹配时拆分该字符串。同时删除您找到的每个匹配项。
此链接有一些很好的例子: 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