js 正则匹配 小结
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 标记。
js 正则匹配 小结的更多相关文章
- js正则匹配的一个日常应用
应用实例 1 /** 将段落中的 \n 转换为 <p></p>, 规范存储 */ 2 function formatParagraphForStore(val) { 3 var ...
- JS正则密码复杂度校验之:JS正则匹配半角英文符号
概述 在JS密码校验中常常会遇到密码强度的校验需求,借用一位朋友提问的图,他在工作中遇到的一个比较经典的密码强度校验要求: 这个需求有两个难点,一,是如何使用正则匹配所有半角英文标点符号,二,是如何验 ...
- js正则匹配两位小数
今天写一个用js正则校验最多保留两位小数的格式. a = /^\d+|\d+\.\d{1,2}$/; 测试 a.test(1.222); 结果:true 一下蒙了,怎么可能,最后找了好久,原来需要把^ ...
- js 正则匹配 域名【host】
如果直接在js中是可以直接取到hostname的,以下方式是通过正则匹配: var url = "http://www.cnblogs.com/cench" var reg = / ...
- js 正则匹配(去掉html标签)
正则匹配去掉所有html标签 var a = "<span>999</span>" a = a.replace(/<[^>]+>/g,' ...
- js正则匹配字符串
这里我第一时间想到的就是用 js 的search 和 match ,其中最常见的是match: 1. str.search(regexp):search()方法不支持全局搜索,因为会忽略正则表达式参数 ...
- js正则匹配table,img及去除各种标签问题
//获取公示栏内容 s = "$row.detail$"; mainContent =s; //如果有多个table使用下面注释的正则只会匹配成一个table //var tabR ...
- js正则匹配以某字符串开始字符串
let decode_sql ="select * from table where create_user='user' order by id desc"; decode_ ...
- js正则匹配身份证号 有坑
// 不能加g,每次匹配会以lastIndex为起始位去查找 // 若加g,匹配到会用最后一位的index去改变lastIndex,没有匹配到则会把lastIndex重置为0 // 不加g,lastI ...
随机推荐
- POJ 1062 限制点
http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 50 ...
- Workflow Builder 2.6.3 Certified on Windows 10 for EBS 12.x
By Steven Chan - EBS-Oracle on May 17, 2016 Workflow Builder 2.6.3 is now certified on Windows 10 de ...
- Apache Samza流处理框架介绍——kafka+LevelDB的Key/Value数据库来存储历史消息+?
转自:http://www.infoq.com/cn/news/2015/02/apache-samza-top-project Apache Samza是一个开源.分布式的流处理框架,它使用开源分布 ...
- docker 私有registry 配置
备注:此处使用linux镜像配置仓库 registry 启动步骤 https://hub.docker.com/_/registry/ docker login docker pull registr ...
- Struts04---命名空间的查询顺序以及默认执行的Action
01.创建login.jsp <%@ page language="java" import="java.util.*" pageEncoding=&qu ...
- Qt中切换窗口功能的实现
两条语句就能够实现了: this->newNC.setWindowFlags(Qt::WindowStaysOnTopHint); this->newNC.show(); mark一下,防 ...
- UI- UINavigationController UITabBarController 使用总结
#pragma mark - UINavigationController UITabBarController ====================================== 控制器 ...
- Intellij IDEA基于Springboot的远程调试
简介 本篇博客介绍一下在Intellij IDEA下对Springboot类型的项目的远程调试功能.所谓的远程调试就是服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地的代码必须 ...
- (三十六)类数组对象arguments
类数组对象:arguments 在函数调用时,我们总能见到arguments这个对象,它具体是用来干什么的呢?感觉逼格非常高呢 函数在使用时,我们总会位函数传入各种参数,arguments会将参数储存 ...
- animal farm 第一章阅读笔记
chapter 1 Old Major's dream. paragraph 1 //Mr Jones is the mastor of the Manor Farm.That night ...