热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

js正则匹配小结

JS的正则表达式rge.test(str)检验目标对象中是否包含匹配模式,并相应的返回true或falserge.sourcestr.search(rge)将返回一个

JS的正则表达式

rge.test(str) 检验目标对象中是否包含匹配模式,并相应的返回true或false   rge.source
str.search(rge) 将返回一个整数值,指明这个匹配距离字符串开始的偏移位置。如果没有找到匹配,则返回 -1
str.replace(re, function(){}) 替换匹配到的数值
rge.exec(str) 没有找到匹配,则它返回 null。如果它找到匹配,则 exec 方法返回一个数
str.match(rge) 用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组(全文匹配模式g,否则只返回第

一个匹配的内容)
match 方法没有找到匹配,返回 null。如果找到匹配返回一个数组并且更新全局 RegExp 对象的属性以反映匹配结果
Input 属性包含整个的被查找字符串。
Index 属性包含了在整个被查找字符串中匹配的子字符串的位置。
LastIndex 属性包含了最后一次匹配中最后一个字符的下一个位置。  
 
 function RegExpTest()  
 {  
 var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())  
 if (ver >= 5.5){ // 测试 JScript 的版本。  
 var src = "The rain in Spain falls mainly in the plain.";  
 var re = /\w+/g; // 创建正则表达式模式。  
 var arr;  
 while ((arr = re.exec(src)) != null)  
 document.write(arr.index + "-" + arr.lastIndex + arr + "\t");  
 }  
 else{  
 alert("请使用 JScript 的更新版本");  
 }  
 }    
语法 1 re = /pattern/[flags]  
语法 2 re = new RegExp("pattern",["flags"])   
 g (全文查找出现的所有 pattern)   
     i (忽略大小写)   
     m (多行查找)
 
定界符:/ /
前导字符:
元字符:规定前导字符在目标对象中出现的模式

“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次。 /fo+/ 
“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次。 /eg*/ 
“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。 /Wil?/ 

限定符:可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。 {n} n    {n,}    {n,m}  
        
 \s:用于匹配单个空格符,包括tab键和换行符;   
 \S:用于匹配除单个空格符之外的所有字符;   
 \d:用于匹配从0到9的数字;[0-9] 
 \D:用于匹配从0到9的数字;[^0-9]
 \w:用于匹配字母,数字或下划线字符;'[A-Za-z0-9_]'   
 \W:用于匹配所有与\w不匹配的字符;'[^A-Za-z0-9_]'   
 . :用于匹配除换行符之外的所有字符。   
 
 \cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。 x 的值必须为 A-Z 或 a-z 之一。否

则,将 c 视为一个原义的 'c' 字符。   
 \f 匹配一个换页符。等价于 \x0c 和 \cL。   
 \n 匹配一个换行符。等价于 \x0a 和 \cJ。   
 \r 匹配一个回车符。等价于 \x0d 和 \cM。   
 \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。   
 \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。   
 \t 匹配一个制表符。等价于 \x09 和 \cI。   
 \v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

定位符:规定匹配模式在目标对象中的出现位置。 较为常用的定位符包括: “^”, “$”, “\b” 以及 “\B”。 

 “^”定位符规定匹配模式必须出现在目标字符串的开头  
 “$”定位符规定匹配模式必须出现在目标对象的结尾  
 “\b”定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一  
 “\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内,  

为了能够方便用户更加灵活的设定匹配模式,正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符。

例如:
    /([a-z][A-Z][0-9])+/ 上述正则表达式将会与任何由字母和数字组成的字符串,如 “aB0” 等相匹配。  
   “|”。例如:/to|too|2/ 上述正则表达式将会与目标对象中的 “to”, “too”, 或 “2” 相匹配。
   否定符 “[^]”。与我们前文所介绍的定位符 “^” 不同,否定符 “[^]”规定目标对象中不能存在模式中所规   定

的字符串。

   当“^”出现在 “[]”内时就被视做否定运算符;而当“^”位于“[]”之外,或没有“[]”时,则应当被视做定   位

符。
   ? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模   式

尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串   

"oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。   
   . 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。

优先级如下:  
 1.\ 转义符  
 2.(), (?:), (?=), [] 圆括号和方括号  
 3.*, +, ?, {n}, {n,}, {n,m} 限定符  
 4.^, $, \anymetacharacter 位置和顺序  
 5.|“或”操作  

正则表达式
"^\\d+$"  //非负整数(正整数 + 0)  
"^[0-9]*[1-9][0-9]*$"  //正整数   
"^((-\\d+)|(0+))$"  //非正整数(负整数 + 0)   
"^-[0-9]*[1-9][0-9]*$"  //负整数   
"^-?\\d+$"    //整数   
"^\\d+(\\.\\d+)?$"  //非负浮点数(正浮点数 + 0)   
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"    //正浮点数   
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮点数(负浮点数 + 0)   
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//负浮点数   
"^(-?\\d+)(\\.\\d+)?$"  //浮点数   
"^[A-Za-z]+$"  //由26个英文字母组成的字符串   
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串   
"^[a-z]+$"  //由26个英文字母的小写组成的字符串   
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串   
"^\\w+$"  //由数字、26个英文字母或者下划线组成的字符串   
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址   
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url  
"^[A-Za-z0-9_]*$" 
/^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。   
/\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID 号码是否由一个2位数字,一个连字符以及一个5位数字组成。   
/<(.*)>.*<\/\1>/ "<(.*)>.*<\/\1>" 匹配一个 HTML 标记。


转:https://www.cnblogs.com/szbing/p/3431514.html



推荐阅读
  • 本打算教一步步实现koa-router,因为要解释的太多了,所以先简化成mini版本,从实现部分功能到阅读源码,希望能让你好理解一些。希望你之前有读过koa源码,没有的话,给你链接 ... [详细]
  • URL参数格式http:localhos:8080demo?ab&cd&ef匹配参数a对应的表达式为^a([^&]*)&匹配参数b对应的表达式为&b([^&]*)&匹配参数c对应 ... [详细]
  • 本文介绍了 Oracle SQL 中的集合运算、子查询、数据处理、表的创建与管理等内容。包括查询部门号为10和20的员工信息、使用集合运算、子查询的注意事项、数据插入与删除、表的创建与修改等。 ... [详细]
  • 开发笔记:前端之前端初识
    开发笔记:前端之前端初识 ... [详细]
  • 本文记录了 JavaScript 中正则表达式的使用方法和常见操作,包括匹配、替换、搜索等。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • MySQL InnoDB 存储引擎索引机制详解
    本文深入探讨了MySQL InnoDB存储引擎中的索引技术,包括索引的基本概念、数据结构与算法、B+树的特性及其在数据库中的应用,以及索引优化策略。 ... [详细]
  • 本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ... [详细]
  • 本文通过分析一个具体的案例,探讨了64位Linux系统对32位应用程序的兼容性问题。案例涉及OpenVPN客户端在64位系统上的异常行为,通过逐步排查和代码测试,最终定位到了与TUN/TAP设备相关的系统调用兼容性问题。 ... [详细]
  • 本题要求实现一个高效的算法,在一个 m x n 的矩阵中搜索目标值 target。该矩阵具有以下特性:每行的元素从左到右按升序排列,每列的元素从上到下按升序排列。 ... [详细]
  • Vulnhub DC3 实战记录与分析
    本文记录了在 Vulnhub DC3 靶机上的渗透测试过程,包括漏洞利用、内核提权等关键步骤,并总结了实战经验和教训。 ... [详细]
  • 2019-2020学年 20174325 叶竞蔚 《网络对抗技术》实验六:Metasploit基础应用
    本实验旨在掌握Metasploit框架的基本应用方法,重点学习三种常见的攻击方式及其实施思路。实验内容包括一次主动攻击(如MS08-067)、一次针对浏览器的攻击(如MS11-050)以及一次针对客户端的攻击(如Adobe漏洞利用)。此外,还包括成功应用一个辅助模块。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 在探讨 MySQL 正则表达式 REGEXP 的功能与应用之前,我们先通过一个小实验来对比 REGEXP 和 LIKE 的性能。通过具体的代码示例,我们将评估这两种查询方式的效率,以确定 REGEXP 是否值得深入研究。实验结果将为后续的详细解析提供基础。 ... [详细]
author-avatar
陈爱梅志杰力凯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有