javascript的正则匹配
前段时间需要用到比较多的js代码,当时有点搞不清test和match方法的区别,向百度求助,找到了这边关于正则匹配的博文,感谢作者分享。
原文地址【http://blog.sina.com.cn/s/blog_89da3e5101013giy.html】
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 标记。
javascript的正则匹配的更多相关文章
- JavaScript 中正则匹配时结果不一致的问题
创建示例项目 考察如下场景,我们有个输入框组件,输入时同时进行校验. interface IInputProps { label: string; } function Input({ label } ...
- javascript 之正则匹配HTML
正则表达式 <(\S*?) [^>]*>.*?</\1>|<.*? /> 匹配 <html>hello</html>|<a> ...
- 常用的JavaScript正则匹配规则代码收藏,很实用
收集一些常用的JavaScript正则表达式匹配规则,比如匹配电话号码.Email.中文字符.身份证号.邮编.QQ号.过滤空白行.匹配特定数字等.觉得这玩意是很有用的,只不过自己水平菜,老是自己写不出 ...
- JavaScript 正则匹配中文,中文符号,空格,全数字,以https:// 开头的url,用于各种场景的输入校验
业务场景1: 密码输入框需要验证输入中文,中文符号,空格等情况,以便于给出错误提示 业务场景2: 输入框只允许输入数字的情况 业务场景3: 输入框允许输入均为数字或以https:// 开头的url的情 ...
- JavaScript——正则匹配、正则提取、正则替换
正则匹配 // 匹配日期 var dateStr = '2015-10-10'; var reg = /^\d{4}-\d{1,2}-\d{1,2}$/ console.log(reg.test(da ...
- js正则匹配的一个日常应用
应用实例 1 /** 将段落中的 \n 转换为 <p></p>, 规范存储 */ 2 function formatParagraphForStore(val) { 3 var ...
- JS中正则匹配的三个方法match exec test的用法
javascript中正则匹配有3个方法,match,exec,test: match是字符串的一个方法,接收一个RegExp对象做为参数: match() 方法可在字符串内检索指定的值,或找到一个或 ...
- php中的正则函数主要有三个-正则匹配,正则替换
php中变量的声明? 由于php声明变量的时候, 不支持使用 var关键字, 又不能直接写一个变量名字, 孤零零的放在那里, 所以, 在php中声明变量的方式, 同时也是给变量初始化的形式, 即: & ...
- phpstorm 正则匹配删除注释行(替换注释行为空行)
使用phpstorm 来编写php 和javascript 代码,感觉还是不错的,用得也很舒服. 遇到了一个需求,有时候在阅读框架源代码的时候 , 想过滤(删除)掉源代码中的注释行,如果手动逐行删除显 ...
随机推荐
- laravel环境安装
参考 https://blog.csdn.net/xiaomayi721025/article/details/84727405 环境准备
- 路飞-git操作
复习 """ 1.pip换源 - 采用国内源下载,速度快 2.虚拟环境 - 可以为项目单独配置开发环境,方便管理依赖模块及模块的版本迭代 3.后台项目重构目录结构 4.后 ...
- while、for循环结构_python
一.while循环的基础例子: 例子1:判断是否大于50 例子2:按需打印乘法口诀 例子3:无限循环 while True: print (“true”) 二.for循环 1.for循环的常见范围的用 ...
- mockito使用教程
一.什么是 Mock 测试 Mock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造出来)或者不容易获取比较复杂的对象(如 J ...
- [Note]Splay学习笔记
开个坑记录一下学习Splay的历程. Code 感谢rqy巨佬的代码,让我意识到了Splay可以有多短,以及我之前的Splay有多么的丑... int fa[N], ch[N][2], rev[N], ...
- MODULE BUILD FAILED: ERROR: COULDN’T FIND PRESET “ES2015” RELATIVE TO DIRECTORY
npm run dev 遇到报错: Module build failed: Error: Couldn't find preset "es2015" relative to di ...
- mysql和oracle建表语句以及数据类型的区别
1.mysql和oracle建表语句的区别 mysql DROP TABLE IF EXISTS `order`;CREATE TABLE `order` ( `id` int(11) NOT NU ...
- 通过scrapy,从模拟登录开始爬取知乎的问答数据
这篇文章将讲解如何爬取知乎上面的问答数据. 首先,我们需要知道,想要爬取知乎上面的数据,第一步肯定是登录,所以我们先介绍一下模拟登录: 先说一下我的思路: 1.首先我们需要控制登录的入口,重写star ...
- codeforces div2 603 D. Secret Passwords(并查集)
题目链接:https://codeforces.com/contest/1263/problem/D 题意:有n个小写字符串代表n个密码,加入存在两个密码有共同的字母,那么说这两个密码可以认为是同一个 ...
- [python]Python 中 if not 用法
在python 判断语句中 None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于 False not None == not False ...