正则验证封装

正则表达式常用符号说明:

.是除换行以外的所有任意符号

\s空白符号

\S除空白符号以外的任意符号

\w字母、数字、下划线

\W 除字母、数字、下划线以外的其他任意符号

\d 数字(0----9)

\D 除数字以外的任意其他符号

^ 字符串开始

$ 字符串结束

* 匹配0到无数次(匹配的是符号前边的字母或者数字等)

  • 匹配1到无数次(匹配的是符号前边的字母或者数字等)

?匹配0次或1次(匹配的是符号前边的字母或者数字等)

{x} 重复x次

{x,} 重复至少x次

{x,y} 重复x次到y次

\[\] 字符组,表示字符范围

() 捕获组(子表达式)

\ 转义符号

\b:匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配 "never" 中的 'er',但不能匹配 "verb" 中的 'er'。

\b是正则表达式规定的一个特殊代码,代表着单词的开头或结尾,也就是单词的分界处,虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。

总结: \b 就是用在你匹配整个单词的时候。 如果不是整个单词就不匹配。 你想匹配 I 的话,你知道,很多单词里都有I的,但我只想匹配I,就是"我",这个时候用 \bI\b

\B:匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。

字符组:

0-9 数字0到数组9之间的任意一个

a-z 字母a到字母z的任意一个

\^cfC 除了字母 c f C的任意一个字符

\\一-\\龥 汉字中的任意一个汉字

\^a-z 除了字母 a 到字母z的任意一个字符

\^-a-c 除了 - 字符以及字母a到字母z的任意一个字符

| 多选分支,或者关系

\1 \2 ... 反向引用 < (\w) >.*</\1> 引用第一个捕获组的结果,用于匹配html的闭合标签

首先将我们写好的逻辑封装成js文件

javascript 复制代码
//正则验证:直接引入组件,传需要验证的参数即可,不需要再写test

/**
 * 用户名
 * @param {*} s
 */
export function UserName(s) {
  return /^[a-zA-Z0-9\u4e00-\u9fa5]{2,10}$/.test(s);
}

/**
 * 密码
 * @param {*} s
 */
export function isPassWord(s) {
  return /^[a-zA-Z0-9]{6}$/.test(s);
}

/**
 * 邮箱
 * @param {*} s
 */
export function isEmail(s) {
  return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(
    s
  );
}

/**
 * 手机号码
 * @param {*} s
 */
export function isMobile(s) {
  return /^1[3-9]{10}$/.test(s);
}

/**
 * 电话号码
 * @param {*} s
 */
export function isPhone(s) {
  return /^([0-9]{3,4}-)?([0-9]{3,4}-)?[0-9]{4,5}$/.test(s);
}

/**
 * URL地址
 * @param {*} s
 */
export function isURL(s) {
  return /^http[s]?:\/\/.*/.test(s);
}

在某个文件中的调用

javascript 复制代码
// 引入自己定义的正则方法
import {isMobile,isPassWord,isPhone,isURL,isEmail,UserName} from './fz'

// 打印看效果
console.log('UserName',UserName('相亲相爱一家人'));
console.log('password',isPassWord('123wew'));
console.log('isMobile',isMobile(1334567890));
console.log('isPhone',isPhone('0109-1723-12394'));
console.log('isURL',isURL('http://localhost:3000/?username=123/'));
console.log('isEmail',isEmail('212880794@qq.com'));
相关推荐
白杨尚青5 小时前
C++进阶篇(五):红黑树——四条规则、三种插入情况与旋转变色
开发语言·数据结构·c++·stl·红黑树·平衡二叉树
.道阻且长.5 小时前
Linux基本开发工具:gdb和cgdb的使用
linux·运维·服务器·开发语言
starzy19905 小时前
深入理解Scala匿名函数:函数式编程基石
开发语言·scala
apcipot_rain6 小时前
C++转Java日记(05)
java·开发语言·c++
apcipot_rain15 小时前
C++转Java日记(04)
java·开发语言·c++
云和数据.ChenGuang17 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
蜗牛一步步往上爬20 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
张张123y1 天前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
冻柠檬飞冰走茶1 天前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
FRing031 天前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2