java 正则 包含数字_正则表达式检查字符串是否只包含数字

此功能检查它的输入是否是传统意义上的数字,因为人们期望正常数字检测功能起作用 .

例如,这是一个可以用于HTML表单输入的测试 .

它绕过了所有的JS民间传说,比如tipeof(NaN)= number,parseint('1 Kg')= 1,booleans强制数字等等 .

它是通过将参数呈现为字符串并将该字符串与@codename-那样的正则表达式进行检查来实现的,但允许使用类似于5.和.5的条目

function isANumber( n ) {

var numStr = /^-?(\d+\.?\d*)$|(\d*\.?\d+)$/;

return numStr.test( n.toString() );

}

not numeric:

Logger.log( 'isANumber( "aaa" ): ' + isANumber( 'aaa' ) );

Logger.log( 'isANumber( "" ): ' + isANumber( '' ) );

Logger.log( 'isANumber( "lkjh" ): ' + isANumber( 'lkjh' ) );

Logger.log( 'isANumber( 0/0 ): ' + isANumber( 0 / 0 ) );

Logger.log( 'isANumber( 1/0 ): ' + isANumber( 1 / 0 ) );

Logger.log( 'isANumber( "1Kg" ): ' + isANumber( '1Kg' ) );

Logger.log( 'isANumber( "1 Kg" ): ' + isANumber( '1 Kg' ) );

Logger.log( 'isANumber( false ): ' + isANumber( false ) );

Logger.log( 'isANumber( true ): ' + isANumber( true ) );

numeric:

Logger.log( 'isANumber( "0" ): ' + isANumber( '0' ) );

Logger.log( 'isANumber( "12.5" ): ' + isANumber( '12.5' ) );

Logger.log( 'isANumber( ".5" ): ' + isANumber( '.5' ) );

Logger.log( 'isANumber( "5." ): ' + isANumber( '5.' ) );

Logger.log( 'isANumber( "-5" ): ' + isANumber( '-5' ) );

Logger.log( 'isANumber( "-5." ): ' + isANumber( '-5.' ) );

Logger.log( 'isANumber( "-.5" ): ' + isANumber( '-5.' ) );

Logger.log( 'isANumber( "1234567890" ): ' + isANumber( '1234567890' ));

正则表达式的解释:

/^-?(\d+\.?\d*)$|(\d*\.?\d+)$/

最初的“^”和最后的“$”匹配字符串的开头和结尾,以确保检查跨越整个字符串 . “ - ?”部分是带“?”的减号允许零或一个实例的乘数 .

然后有两个相似的组,用括号分隔 . 该字符串必须与这些组中的任何一个匹配 . 第一个匹配数字,如5.和第二个.5

第一组是

\d+\.?\d*

"\d+"匹配一个数字(\ d)一次或多次 .

".?"是小数点(使用""进行转义以避免其魔法),零或一次 .

最后一部分"\d*"再次是一个数字,零次或多次 .

所有部分都是可选的,但是第一个数字,所以这个组匹配的数字像5.而不是.5,它们与另一半相匹配 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值