正则小数验证和去除中间空格
<input type="text" id="con" style="width:200px;height:50px;" value="345.56"/> <button id="but" style="width:200px;height:50px;">start</button> <div id="result" style="background-color: #0099FF;"></div> <div id="result1" style="background-color: #26B33E;"></div>
$(function(){ var $but = $("#but"); $but.on('click',function(){ var $con = $("#con").val(); var $result = $("#result"); var $result1 = $("#result1"); var reg1 = /^(\d+)(\.\d{1,2})?$/; //必须整体都符合 //0: "345.56"整体结果 //1: "345"第一个小分组 //2: ".56"第二个小分组 $result.html(reg1.exec($con)); //这里的显示结果会重复两次的原因是,将数组赋值给了它,这个数组包含了三项,整体结果,第一个小分组,第二个小分组,所以结果看起来是重复了两次其实是: //res[0]->"345.56" res[1]->"345" res[2]->".56" var reg2 = /^(\d+)(\.\d{1,2})?/; //在没有$结束的情况下可以匹配到字符串中符合的部分,即使后面的不符合例如:345.56asdf和345.5656 //结果依然是(这样也许可以实现截取两位2而不四舍五入) //0: "345.56" //1: "345" //2: ".56" var flag = reg2.test($con); if(flag){ //输入为345.588888 //结果为345.58 $result1.html(reg2.exec($con)[0]); } var res = reg1.exec($con) console.log(res,flag); //var ary = [1,2,3,4,5]; //$result1.html(ary);//->12345 }) })
value.replace(new RegExp(/( )/g), '-')
去除中间的空格,替换为-,2020/6/10 10:57:10=>2020/6/10-10:57:10
修饰符
g:全局匹配
i:忽略大小写匹配
m:多行匹配
量词元字符
+:出现1到多次元字符
?:出现0到1次元字符
*:出现0到多次元字符
{n}:出现n次
{n,}:出现n到多次
{n,m}:出现n到m次
特殊元字符
\:转义字符(普转特或特转普)
.:除\n之外的任意字符
\d:匹配0-9中任意字符
\D:匹配除0-9之外的任意字符
\n:匹配换行符
\w:匹配0-9或字母或_中任意字符
\s:匹配空白字符
\b:匹配边界符
\t:匹配制表符
\r:软空格
x|y:匹配x或y中的任意一个字符
[a-z]:匹配a-z中任意一个字符
[^a-z]:匹配非a-z的字符
[xyz]:匹配x或y或z中的一个字符
[^xyz]:匹配非xyz的字符
():小分组,大正则中的小正则
^:以某个元字符开始
$:以某个元字符结束
?::只匹配不捕获
?=:正向预查
?!:负向预查
一、数字相关 只有数字:/^[0-9]*$/ 或 /^\d{1,}$/ 整数:/^-?[0-9]\d*$/ 正整数:/^\+?[1-9]\d*$/ 非正整数:/^-[1-9]\d*|0$/ 负整数:/^-[1-9]\d*$/ 非负整数:/^\d+$/ 浮点数:/^(-?\d+)(\.\d+)?$/ 正浮点数:/^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$/ 负浮点数:/^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)/ 小数:/^-?\d+\.\d+$/ 正数/负数/小数:/^(\-|\+)?\d+(\.\d+)?$/ 正实数保留小数点后 2 位:/^[0-9]+(.[0-9]{2})?$/ 正实数保留小数点后 1 到 3 位:/^[0-9]+(.[0-9]{1,3})?$/ n 位数字:/^\d{n}$/ 至少 n 位数字:/^\d{n,}$/ m 至 n 位的数字:/^\d{m,n}$/ 数字和字母至少包含其一:/^[A-Za-z0-9]+$/ 必须包含数字和字母:/^(?=.*[a-zA-Z])(?=.*\d).+$/ 二、字符相关 m 至 n 位的字符:/^.{3,20}$/ 英文字母字符:/^[A-Za-z]+$/ 大写英文字母字符:/^[A-Z]+$/ 小写英文字母字符:/^[a-z]+$/ 汉字:/^[\u4e00-\u9fa5]{0,}$/ 汉字、英文、数字、下划线至少其一:/^[\u4E00-\u9FA5A-Za-z0-9_]+$/ 三、时间相关 24小时制时间(HH:mm:ss):/^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/ 12小时制时间(hh:mm:ss):/^(?:1[0-2]|0?[1-9]):[0-5]\d:[0-5]\d$/ 24小时制时间(HHmmss):/([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$/ 日期(yyyy-MM-dd,如 2222-01-01,年份必为4位):/^\d{4}-\d{1,2}-\d{1,2}/ 日期(yyyyMMdd,如 20220202):/^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))$/ 日期+时间(YYYYMMDD HH:mm:ss):/^\d{4}([/:-\S])(1[0-2]|0?[1-9])\1(0?[1-9]|[1-2]\d|30|31) (?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/ 四、号码相关 手机号(以 1 开头):/^(?:(?:\+|00)86)?1\d{10}$/ 手机号(以 13 至19 开头):/^(?:(?:\+|00)86)?1[3-9]\d{9}$/ 国内固话号码:/\d{3}-\d{8}|\d{4}-\d{7}/ 邮箱号:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ 邮政编码:/[1-9]\d{5}(?!\d)/ 身份证号:/^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/ 银行卡号(公、私账户):/^[1-9]\d{9,29}$/ 车牌号:/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/ 合法账号1(字母开头,5-16位,允许字母数字下划线):/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/ 合法账号2(4-16位,允许字母,数字,下划线,减号):/^[a-zA-Z0-9_-]{4,16}$/ 强密码1(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/ 强密码2(必须包含字母、数字、特殊字符:**@#$%^& `~()-+=* ):/^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_!@#$%^&* ~()-+=]+$)(?![a-z0-9]+$)(?![a-z\\W_!@#$%^& *~()-+=]+$)(?![0-9\W_!@#$%^&* ~()-+=]+$)[a-zA-Z0-9\\W_!@#$%^&*~()-+=]/ 网址:/^(((ht|f)tps?):\/\/)?(^!@#$%^&*?.\s-?\.)+[a-z]{2,6}\/?/ 网址带端口号:/^((ht|f)tps?:\/\/)?[\w-]+(\.[\w-]+)+:\d{1,5}\/?$/