正则表达式,又称规则表达式,英语名称:Regular Expression,在代码中常简写为regex、regexp或RE。是对字符串操作的一种逻辑公式。
正则表达式主要有3个用处:
1、替换文本,可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字 。例如屏蔽一些骂人的特定文字等。
2、提取字符串中的某些特定字符串。
3、测试字符串的某个模式。例如,输入用户名、密码、电话号码等数据时,对其检测,看是否符合输入要求。这称为数据有效性验证 。
正则表达式语法:普通字符串与特殊字符串(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
var reg=new RegExp(pattern, attributes)或者var reg=/pattern/ //RegExp是一个对象,就像数组一样。现在建立一个最基本的正则表达式:
var reg=new RegExp("a")//匹配字母a;var reg=new RegExp("a","i")//第二个参数,表示匹配时不分大小写 ;
attributes为可选字符串,包含属性"g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配.
正则方法:search\match\test\replace
search:检索与正则表达式相匹配的值。返回找到第一个匹配值的位置,如果没有找到,则返回-1;
语法:stringObj.search(rgExp) stringObj 必选项 rgExp正则表达式
match:找到一个或多个正则表达式的匹配。使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。
语法:stringObj.match(rgExp) stringObj-必选项。对其进行查找的 String 对象或字符串文字。
rgExp-必选项。为包含正则表达式模式和可用标志的正则表达式对象。
replace:替换与正则表达式匹配的子串。
语法:stringObj.replace(rgExp, replaceText) stringObj-字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串。。
test:该方法常用于判断用户输入数据的合法性
该方法的返回值是布尔值,通过该值可以匹配字符串中是否存在于正则表达式相匹配的结果,如果有匹配内容,返回ture,如果没有匹配内容返回false,该方法常用于判断用户输入数据的合法性,比如检验Email的合法性;
基本语法:objReg.test(objStr) objReg 必选项 RegExp对象名称 objStr 要进行匹配检测的字符串
元字符:
. :查找单个字符,除了换行和行结束符。
\w:查找单词字符数字、字母、下划线。
\d:查找数字。
\s:查找空白字符。
\b:匹配单词边界
\n:查找换行符
方括号:
[abc] :查找方括号之间的任何字符。
[^abc]:查找任何不在方括号之间的字符。
[0-9]:查找任何从 0 至 9 的数字。
[a-z]:查找任何从小写 a 到小写 z 的字符。
[A-z]:查找任何从大写 A 到小写 z 的字符。
量词:
n+ :匹配任何包含至少一个 n 的字符串。+多次匹配
n*:匹配任何包含零个或多个 n 的字符串。
n?:匹配任何包含零个或一个 n 的字符串。
n{X}:匹配包含 X 个 n 的序列的字符串。
n{X,Y}:匹配包含 X 或 Y 个 n 的序列的字符串。
n$:匹配任何结尾为 n 的字符串。
^n:匹配任何开头为 n 的字符串。
括号:
正则表达式的() [] {}有不同的意思。
() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。
(\s*)表示连续空格的字符串。
[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。
{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配一到三个空格。
(0-9) 匹配 '0-9′ 本身。 [0-9]* 匹配数字(注意后面有 *,可以为空)[0-9]+ 匹配数字(注意后面有 +,不可以为空){1-9} 写法错误。
[0-9]{0,9} 表示长度为 0 到 9 的数字字符串。
下面记录了一些常用的正则表达式:
用户名 /^[a-z0-9_-]{3,16}$/
密码 /^[a-z0-9_-]{6,18}$/
acas12_aaa@sina.com.cn
电子邮箱 /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/
URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
IP 地址 /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
HTML 标签 /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/
删除代码\\注释 (?<!http:|\S)//.*$
Unicode编码中的汉字范围 /^[\u2E80-\u9FFF]+$/
“^\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_]*$"。
东西太多记不住啊 啊啊啊啊啊。。。
详细内容请看https://www.jianshu.com/p/a8ce5341094c