正则表达式,又称规则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)。
正则表达式是一种文本模式,包括普通字符(例如,a - z 的字母或是 0 - 9 的数字)和特殊字符(称为"元字符")。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
为了更好地去理解正则表达式,先来个简单的例子:
^[0-9]+abc$ ^ 为输入字符串的开始位置[0-9]+ 匹配多个数字,[0-9] 匹配单个数字,+ 匹配一个或是多个abc 匹配字母 abc$ 为输入字符串的结束位置典型的搜索和替换操作会要求我们提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,将变得很困难。
正则表达式,可以:
测试字符串内的模式,即进行数据验证。替换文本。基于模式匹配从字符串中提取子字符串。语法:正则字面量表达方式:/正则表达式主体/修饰符(可选)
若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符 \ 放在它们前面。
特别字符描述$匹配输入字符串的结尾位置。若要匹配 $ 字符本身,请使用 \$( )标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。*匹配前面的子表达式零次或多次+匹配前面的子表达式一次或多次.匹配除换行符 \n 之外的任何单字符[标记一个中括号表达式的开始?匹配前面的子表达式零次或一次,或指明一个非贪婪限定符^匹配输入字符串的开始位置在方括号表达式中使用时,表示非或除外该方括号表达式中的字符集合{标记限定符表达式的开始|指明两项之间的一个选择限定符用来指定正则表达式的一个给定字符必须要出现多少次才能满足匹配
限定字符描述*匹配前面的子表达式零次或多次。* 等价于 {0,}+匹配前面的子表达式一次或多次。+ 等价于 {1,}?匹配前面的子表达式零次或一次。? 等价于 {0,1}{n}n 为非负整数,匹配确定的 n 次{n,}n 为非负整数,至少匹配n 次。{1,} 等价于 +,{0,} 则等价于 *{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次* 和 + 限定符都是贪婪的,它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。**
注意:能将限定符与定位符一起使用。(在紧靠换行或者单词边界的前面或后面不能有一个以上位置)
标记不写在正则表达式里,标记位于表达式之外
修饰符描述iignore - 不区分大小写。搜索时不区分大小写: A 和 a 没有区别gglobal - 全局匹配。查找所有的匹配项mmore - 多行匹配s默认情况下的圆点 . 是 匹配除换行符 \n 之外的任何字符,加上 s 修饰符之后, . 中包含换行符 \n正则表达式从左到右进行计算
运算符描述\转义字符(),(? :),(?=),[]圆括号和方括号*, +,?,{n},{n,},{n,m}限定符^,$,\任何元字符、任何字符定位点和序列(即:位置和顺序)|替换,“或” 操作我们一般用正则表达式来验证用户的输入。当用户提交一个form表单后,要判断输入的用户名、密码、电话号码、地址、email地址、信用卡号码等是否有效。
1、匹配单字符
[a-z] //匹配所有的小写字母 [A-Z] //匹配所有的大写字母 [a-zA-Z] //匹配所有的字母 [0-9] //匹配所有的数字 [0-9\.\-] //匹配所有的数字,句号和减号 [ \f\r\t\n] //匹配所有的白字符2、匹配双字符
^[a-z][0-9]$ //匹配一个由一个小写字母和一位数字组成的字符串 ^[^0-9][0-9]$ //匹配第一个字符不能是数字的字符串3、排除特定字符
[^a-z] //除了小写字母以外的所有字符 [^\\\/\^] //除了(\)(/)(^)之外的所有字符 [^\"\'] //除了双引号(")和单引号(')之外的所有字符4、匹配多个字符或数字( {} 的用法)
^[a-zA-Z0-9_]{1,}$ // 所有包含一个以上的字母、数字或下划线的字符串 ^[1-9][0-9]{0,}$ // 所有的正整数 ^\-{0,1}[0-9]{1,}$ // 所有的整数 ^[-]?[0-9]+\.?[0-9]+$ // 所有的浮点数等价于
^[a-zA-Z0-9_]+$ ^[1-9][0-9]*$ ^\-?[0-9]+$ ^[-]?[0-9]+(\.[0-9]+)?$参考地址:正则表达式 - 在线测试及代码生成工具