JS【正则表达式】
1.手机号码
/^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/
区号+座机号+分机号
/^(0[0-9]{2,3}/-)?([2-9][0-9]{6,7})+(/-[0-9]{1,4})?$/
2.中英文姓名
/^([\u4e00-\u9fa5]{2,20}|[a-zA-Z.\s]{2,20})$/
- 可以是中文
- 可以是英文,允许输入点(英文名字中的那种点), 允许输入空格
- 中文和英文不能同时出现
- 长度在20个字符以内
3.中文姓名
/^[\u2E80-\u9FFF]+$/
4.身份证号码
/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/
使用方法
const regexp == /^([\u4e00-\u9fa5]{2,20}|[a-zA-Z.\s]{2,20})$/
if(!regexp.test(this.state.name)){
Toast.info(’请填写正确的姓名‘)
}
5.Input框过滤中文,只能输入字母和数字
onChangeText={
(text) => {
const newText = text.replace(/[\u4e00-\u9fa5]/g, ''); //将中文替换成空字符串
//可以打印看看是否过滤掉了中文
console.log(newText)
this.setState({text: newText})
}
}
6.过滤数字和特殊字符
<input name="name" maxlength="6" type="text" placeholder="姓名" onkeyup="value=value.replace(/xxx/g,'')" >
7.html 表单验证
$('.consultation-leaveMessage-container .button').on('click',function () { let lm = $('[name=lm]').val() //给input/textarea 标签添加name属性作为标记 let name = $('[name=name]').val() let tel = $('[name=tel]').val() if(lm == ''){ alert('留言内容不能为空') return } if(name != ''){ const reg = /^([\u4e00-\u9fa5]{2,20}|[a-zA-Z.\s]{2,20})$/ if(!reg.test(name)){ alert('请输入正确的姓名') return; } }else { alert('姓名不能为空') return } if(tel != ''){ const reg = /^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/ if(!reg.test(tel)){ alert('请输入正确的联系电话')
return } }else { alert('联系电话不能为空') return } });
9.字母或者数字 4到6位
let reg = /^[a-zA-Z0-9]{4,6}$/
10.替换字符串中所有某个字段为其他字段
let str = '我是生长在中国南方的纯正中国人';
let reg = new RegExp( '天朝' , "g" )
let newstr = data.extra.replace( reg , '啊哈哈' );
console.log('value',newstr);
11.判断链接是否以http://或https://开头 协议头
let reg = /http[s]{0,1}:\/\/([\w.]+\/?)\S*/
if (!reg.test(game_link)) {
window.$message.warn('游戏链接必须以http://或https://开头')
return;
}
12. 判断是否为整数
/^\d+$/.test(str) //整数
13. ?
默认情况下: 匹配前面一个表达式 0 次或者 1 次。等价于 {0,1}
。
先行断言:
1. x(?!y)
仅仅当'x'后面不跟着'y'时匹配'x',这被称为正向否定查找。
2.x(?=y)
仅仅当'x'后面跟着'y'时匹配'x'.这种叫做先行断言。
注意点:
- 正则之间不能有空格,不然无效!!!
14. .
小数点: 默认匹配除换行符之外的任何单个字符。
\.js 表示匹配.js
\\.js表示匹配任意字符串js
^(?!.*\\.(js|jsx|css|sass|scss|json|cjs)$) 表示匹配非 .js/.jsx 结尾的字符串
15. *
匹配前面的子表达式0到多次
16.日期
const USFormatReg = /^([1-9]|1[0-2])\/([1-9]|[12][0-9]|3[01])\/(19\d{2}|2\d{3})$/; // M/D/YYYY const UKFormatReg = /^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[0-2])\/(19\d{2}|2\d{3})$/; // DD/MM/YYYY const ISOFormatReg = /^(19\d{2}|2\d{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/; // YYYY-MM-DD
格式化处理后,再用
moment(value, format).valid()判断是否是有效日期, 例如2/29/2022 就是false
17.a开头b结尾 中间任意字符串
/^a.+b$/.test("a?esModule=false!./build/pdf.worker.b") // .+代表任意字符串出现至少一次