基本正则笔记

简介: 1.   ^   字符串的开始; $ 字符串的结束 example: "^abc" 以abc 开头   "def$"  以def结尾2.  *   没有或者更多; + 一次或者更多  ; ? 没有或者一个 example:  "ab*" a 后面跟着零个或者若干个b;      "ab+" ...

1.   ^   字符串的开始; $ 字符串的结束

 example: "^abc" 以abc 开头   "def$"  以def结尾

2.  *   没有或者更多; + 一次或者更多  ; ? 没有或者一个

 example:  "ab*" a 后面跟着零个或者若干个b;

      "ab+" a 后面后面跟着一个b或者若干个b ;

      "ab?"  a 后面跟着零个b或者一个b

      "a?b+$"  结尾处,没有a或者一个a后面一个或者多个b; 以没有a或者一个a后面一个或者多个b结尾(从后面往前读)

3. { }  表示重复次数

 example: "ab{2}"  a后面跟着两个b

      "ab{2,}"  a后面跟着至少两个b

      "ab{2,5}" a 后面跟着2到5个b

 4.  |   表示或

 example: "hi | hello" 字符串里有hi 或者hello

      (b | cd)ef  'bef' 或者cdef

5.   .  代表任何字符串

 example:   "a.[0-9]" a 后面跟着任意一个字符和任意一个数字

      "^.{3}$" 任意三个字符的字符串

6.  []   括号的内容是可选字符集, 某些字符允许在一个字符串中的某一特定位置出现

example: 

  "[ab]":表示一个字符串有一个"a"或"b"(相当于"a¦b");

  "[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a¦b¦c¦d"或者"[abcd]");

  "^[a-zA-Z]":表示一个以字母开头的字符串;

  "[0-9]%":表示一个百分号前有一位的数字;

  ",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。

 

 

 

常用正则匹配:

 

//校验密码:只能输入6-10个以字母开头、可带数字、“_”、“.”的字串 

/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){5,9}$/    

  拆分: ^[a-zA-Z]{1} 一个字母开头,

      ([a-zA-Z0-9] | [._]) 数字,字母 或者 ._       

      {4,19}  4-19 个

// 常用密码  只能输入6-20个字母、数字、下划线, \w 用于匹配字母 数字 下划线

/^(\w){6,20}$/

 

//校验URL

/^http[s]{0,1}:\/\/.+$/

/^http[s]{0,1}:\/\/.{1,n}$/

(表示url串的长度为length(“https://”) + n )


 \ / :表示字符“/”。

匹配URL 和IP地址的

function IsURL (str_url) {
    var strRegex = '^((https|http|ftp|rtsp|mms)?://)'
        + '?(([0-9a-z_!~*\'().&=+$%-]+: )?[0-9a-z_!~*\'().&=+$%-]+@)?' //ftp的user@ 
        + '(([0-9]{1,3}.){3}[0-9]{1,3}' // IP形式的URL- 199.194.52.184 
        + '|' // 允许IP和DOMAIN(域名) 
        + '([0-9a-z_!~*\'()-]+.)*' // 域名- www. 
        + '([0-9a-z][0-9a-z-]{0,61})?[0-9a-z].' // 二级域名 
        + '[a-z]{2,6})' // first level domain- .com or .museum 
        + '(:[0-9]{1,4})?' // 端口- :80 
        + '((/?)|' // a slash isn't required if there is no file name 
        + '(/[0-9a-z_!~*\'().;?:@&=+$,%#-]+)+/?)$';
    var re=new RegExp(strRegex);
    //re.test() 
    if (re.test(str_url)) {
        return (true);
    } else {
        return (false);
    }
}

  

 

取出 a 的 href:  /(?<=<a\s*.*href=")[^"]*(?=")/g    =>  www.com       

        /<a.*?href?\s*=\s*['|"]+?(.*?)['|"]+?/g;  => <a href="www.com"
 
 
 
  • 已知有字符串foo=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById” 正则解决

var a = 'get-element-by-id'.split("-");

var b= [];

a.forEach(function(i){b.push(titleCase(i))})

function titleCase(str) { return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase()); };

function firstLowerCase(str) { return str.replace(/( |^)[A-Z]/, (L) => L.toLowerCase()); };

firstLowerCase(b.join().replace(/,/g,''));
// "getElementById"

 

对电话号码的部分隐藏:

"13456789012".replace(/(\d{3})(\d{4})(\d{4})/,"$1****$3")

主要通过分组将里面部分的需要隐藏的替换

 

推荐文章:https://segmentfault.com/a/1190000014981826

目录
相关文章
|
jenkins Shell 持续交付
vmware esxi堡垒机自动快照
vmware esxi堡垒机自动快照
1110 0
|
域名解析 Linux Docker
CentOS8 安装 Docker
本文主要为大家讲解在CentOS8 上安装 Docker的过程,以及安装中的常见问题解决。
23981 2
CentOS8 安装 Docker
|
弹性计算 IDE 安全
打造在线编程环境
打造自己的在线编程环境,使用Coding WebIDE来实现在线的IDE,以便我们在不方便使用本地编辑器的时候可以使用在线编辑器来进行我们的在线编辑操作。
打造在线编程环境
E: flAbsPath on /var/lib/dpkg/status failed - realpath (2: 没有那个文件或目录)
E: flAbsPath on /var/lib/dpkg/status failed - realpath (2: 没有那个文件或目录)
392 0
|
4月前
|
人工智能 分布式计算 DataWorks
大数据& AI 产品月刊【2025年5月】
大数据& AI 产品技术月刊【2025年5月】,涵盖5月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据& AI 方面最新动态。
英伟达玩转剪枝、蒸馏:把Llama 3.1 8B参数减半,性能同尺寸更强
【9月更文挑战第10天】《通过剪枝和知识蒸馏实现紧凑型语言模型》由英伟达研究人员撰写,介绍了一种创新方法,通过剪枝和知识蒸馏技术将大型语言模型参数数量减半,同时保持甚至提升性能。该方法首先利用剪枝技术去除冗余参数,再通过知识蒸馏从更大模型转移知识以优化性能。实验结果显示,该方法能显著减少模型参数并提升性能,但可能需大量计算资源且效果因模型和任务而异。
252 8
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
**RNN**,1986年提出,用于序列数据,如语言模型和语音识别,但原始模型有梯度消失问题。**LSTM**和**GRU**通过门控解决了此问题。 **CNN**,1989年引入,擅长图像处理,卷积层和池化层提取特征,经典应用包括图像分类和物体检测,如LeNet-5。 **Transformer**,2017年由Google推出,自注意力机制实现并行计算,优化了NLP效率,如机器翻译。 **BERT**,2018年Google的双向预训练模型,通过掩码语言模型改进上下文理解,适用于问答和文本分类。
551 9
|
网络协议 Java 开发工具
七牛云测开一面(60min)面经
作者allin春招的菜鸡芊寻分享的七牛云测开一面面试经历,涉及自我介绍、专业背景、项目经验、技术问题(如缓存问题、Spring Boot自动配置、面向对象特性、String类实现、Maven和Git使用、Linux操作等)、网络协议、数据结构(链表)以及反问环节,作者感觉面试官态度不错,但自己准备的重点问题没有被问到,整体体验良好。
|
10月前
|
存储 人工智能 Serverless
方案测评 | 10分钟上手主动式智能导购AI助手构建
本文介绍了一种基于Multi-Agent架构的智能导购系统方案,利用百炼的Assistant API快速构建,旨在10分钟内完成搭建并实现精准的商品推荐。通过详细的操作指南,展示了从获取API Key、创建函数计算应用、部署示例网站、验证导购效果到集成商品检索应用等全过程,最后提出了关于文档完善、功能优化等方面的体验反馈。
|
存储 数据挖掘 区块链
《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)(下)
《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)(下)
169 0