我正在尝试用一些可能性进行每月分期付款,比如:
- 3x//结果==3
- 10x//结果==10
- 30//结果==1
- 30./60//结果==2
- 30@60@90//结果==3
- 30 60 90 120//结果==4
- 30-60-90-120-150//结果==5
- 30x60x90x120x150x180//结果==6
等等…我正在尝试获取任意字符,使用多个空格或多个字符(是否相等)。到目前为止,我达到了以下代码。。。但我可以加上数字的例外,结果并不总是正确的。
var pattern = /(#?[a-zA-Z(!0-9) /]+)/g;
var a = '30/60/90';
var b = a.split(pattern);
$('#yyy').text(b);
$('#xxx').text(b.length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label id="yyy"></label>
<br><br>
<label id="xxx"></label>
我对正则表达式感到害怕,真的很"讨厌",所以如果能在答案/注释中解释你为什么要做特定的正则表达式,我会很高兴(这样我就可以在没有太多线索的情况下学习而不是复制/粘贴)
我不太确定我是否正确理解了你的问题,但我会按照我的理解回答:
要拆分除数字以外的任何内容,解决方案是:
var pattern = /D+/g;
var a = '30/60/90';
var b = a.split(pattern);
$('#yyy').text(JSON.stringify(b));
$('#xxx').text(b.length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label id="yyy"></label>
<br><br>
<label id="xxx"></label>
正则表达式非常简单:d
的意思是一个数字,所以D
的意思是不是一个数字,所以D+
的意思是一系列不是数字的字符。
如果你尝试匹配而不是拆分,这可能会更容易:
var pattern = /d+/g;
var a = '30/60/90';
var b = [];
var m;
while (m = pattern.exec(a))
b.push(m[0]);
$('#yyy').text(JSON.stringify(b));
$('#xxx').text(b.length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label id="yyy"></label>
<br><br>
<label id="xxx"></label>
在这种情况下,d+
表示一系列数字。
供参考,在JS中:
d
是[0-9]
的简写D
是[^0-9]
的简写