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 } });

 8. 控制input文本框只能输入正整数

 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") // .+代表任意字符串出现至少一次

posted @ 2020-02-27 10:07  一路向北√  阅读(259)  评论(0编辑  收藏  举报

web应用开发&研究 -

业精于勤而荒于嬉。

工作,使我快乐。


Font Awesome | Respond.js | Bootstrap中文网