正则表达式

“这是我参与8月更文挑战的第13天,活动详情查看: 8月更文挑战” juejin.cn/post/
6987962113788493831”

前言

“八月的色彩是用金子铸就的,明亮而珍贵;八月的色彩是用阳光酿造的,芬芳而灿烂。”

未来的日子,愿你吧自己调至最佳状态,缓缓努力,慢慢变好 Y(^o^)Y

最近在开发一个文档工具,在处理很多场景的时候大量的会用到正则表达式,正则表达式的使用,可以通过简单的办法来实现强大的功能,所以正则表达式支持的语言也有很多,比如:Javac++Python等等。

为什么使用正则表达式?

通常我们在替换搜索时,需要提供准确的文本,这样可以满足大部分的需求。但是,这样的方式就会缺少灵活性,如果使用这种方法搜索动态文本,虽然也可以做到,却会变得很困难。

我们看一个简单的例子:

文件名匹配/example.*\.js/

example.js
example11.js
example33.js
exampleMn.js
examplemm.js
复制代码

正则中的 .* 都做了什么呢?下面我们就一一揭开它的神秘面纱。

语法

常见的字符

字符 描述 示例
[A-Z] 匹配所有大写字母
[\s\S] 匹配所有。\s是匹配所有空白符,包括换行,\S 非空白符,不包括换行
. 匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]
\w 匹配字母、数字、下划线。等价于 [A-Za-z0-9_]
\n 匹配一个换行符
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。要匹配 ^ 字符本身,使用 \^
$ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n\r 之前的位置匹配
( ) 标记一个子表达式的开始和结束位置
* 匹配前面的子表达式 0 次或多次
+ 匹配前面的子表达式 1 次或多次
? 匹配前面的子表达式 0 次或一次,或指明一个非贪婪限定符
| 指明两项之间的一个选择,相当于
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次

常用的正则

验证数字

    var reg = /^[0-9]*$/;<br>
    var texts = "12132";<br>
    if(reg.test(texts)){
      console.log("验证数字");
    }
复制代码

贴几个自己常用到的(拿来即用)

  1. /^(\d+)(\.?)(\d{0,2})$/ 输入整数或小数,保留2位小数
  2. /^[0-9.%]{1,}$/ 输入百分数值
  3. /^1[34578]\d{9}$/ 验证为手机号码
  4. /^(\/)[\/a-zA-Z0-9_-]+$/ 以/开头的包含 / 数字字母 _ -
  5. /^[A-Za-z0-9]+$/ 只能输入数字和字母
  6. /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{6,}$/ 至少6位密码 数字+字母,数字+特殊字符,字母+特殊字符,数字+字母+特殊字符组合,而且不能是纯数字,纯字母,纯特殊字符
  7. /^(?![\d]+$)(?![a-zA-Z]+$)(?![!#$%^&*]+$)[\da-zA-Z!#$%^&*]{6,}$/ // 限定特殊字符,例如,特殊字符的范围为 !#$%^&*
  8. /^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){0,})(?=(.*[\w]){1,})(?!.*\s).{14,}$/ 不少于14位的包含大写字母、小写字母、符号
  9. /^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\w]){1,})(?!.*\s).{14,}$/ 不少于14位的包含大写字母、小写字母、数字、符号
  10. /^[\s\S]*.*[^\s][\s\S]*$/ input 输入框不能为空字符
  11. “^(?![a-zA-Z]+)(?![AZ09]+)(?![A-Z0-9]+)(?![A-Z\W !@#%^&*`~()-+=]+)(?![a-z0-9]+)(?![a-z\W_!@#%^&~()-+=]+$)(?![0-9\W_!@#$%^&*~()-+=]+)[a-zA-Z0-9\W_!@#%^&`~()-+=]{3,30}$” 大写 小写 数字 字符 任意三种和三种以上组合
  12. /\B(?=(\d{3})+(?!\d))/g 千分位格式化

结语

如果这篇文章帮到了你,欢迎点赞?和关注⭐️

文章如有错误之处,希望在评论区指正??。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享