我在http://www.regexpal.com/上测试了三个正则表达式,它们就是我需要的,但在进行正则表达式测试时,其中2个返回false(BTC和CAD),只有比特币地址似乎有用(你可以用下面这个钱包测试)。
13dHNxtbckAFM4PzdBqWgymFJmcv3Yzi32
https://jsfiddle.net/ps2fj1ff/1 (所有相关代码都在html部分中)
var regWallet = new RegExp("^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$");
var regBTC = new RegExp("^\d*\.\d*$");
var regCAD = new RegExp("^\d+(\.(\d{2}))?$");
$('#button1').on('click', function() {
var btcCheck = $('#amount_btc').val();
if (regBTC.test(btcCheck)) {
} else {
alert("Invalid BTC value!");
}
var cadCheck = $('#amount_cad').val();
if (regCAD.test(cadCheck)) {
} else {
alert("Invalid CAD value!");
}
var walletCheck = $('#wallet').val();
if (regWallet.test(walletCheck)) {
} else {
alert("Invalid Bitcoin address, please make sure you've entered a valid address!");
}
});
答案 0 :(得分:1)
原因是在var regBTC = new RegExp("^\d*\.\d*$");
\
console.log(regBTC)
用于转义角色,因此如果^d*.d*$
,您会将其视为var regBTC = new RegExp("^\\d*\\.\\d*$");
。
为了防止这种情况,您必须将其双重转义:/
或者更好地使用var regBTC = /^\d*\.\d*$/;
代替:filter=stream
其他正则表达式也是如此。
(我最初认为单引号也会起作用,但显然不是javascript)
答案 1 :(得分:1)
请改用:
var regBTC = /^\d*\.\d*$/;
var regCAD = /^\d+(\.(\d{2}))$/;
它更干净,更易读,因为大多数编辑都会以这种格式为您提供正则表达式语法高亮显示。
使用new RegExp
迫使您将表达式写为字符串时,没有任何合理的理由,当JavaScript中内置了正确的正则表达式语法时,这会强制您使用混乱的转义符