正则表达式(各语言通用)

正则表达式修饰符

正则表达式是程序员必备的一个知识点,不管是做数据处理,还是前端的表单验证都是非常好用的,掌握好正则表达式是非常必须的,下面为大家介绍了正则表达式的用法和一些技巧。
正则表达式修饰符

i 执行对大小写不敏感的匹配。

g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

m 执行多行匹配。

正则表达式模式
括号用于查找一定范围的字符串:

[abc] 查找方括号之间的任何字符。

[0-9] 查找任何从 0 至 9 的数字。

(x|y) 查找由 | 分隔的任何选项。

元字符(Metacharacter)是拥有特殊含义的字符:

\d 查找数字。

\s 查找空白字符。

\b 匹配单词边界。

\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

Quantifiers 定义量词:

n+ 匹配任何包含至少一个 n 的字符串。

n* 匹配任何包含零个或多个 n 的字符串。

n? 匹配任何包含零个或一个 n 的字符串。

// 正则表达式在js中的使用

	// 1.利用RegExp对象来创建
	var Regexp=RegExp=(/123/);
	// 2.利用字面量进行创建表达式
			
	var rg=/123/;
	// 利用test测试我们写的正则表达式是否符合要求,符合返回true,不符合返回flase
	// regexobj.test(str)
	// regexobj 我们自己写的正则表达式 str我们需要测试的文本  
	// 边界符
	// 1. ^ 表示匹配首行文本以谁开始
	// 2. $ 表示匹配首行文本以谁结束
	// 正则表达式里面不需要加引号,不管是字符串还是数字
			
	//var rg=/abc/;只要包含有adc返回都是true
			
//var rg=/^abc/;只能是adc开始返回是true
			
	//var rg=/^abc$/;只能是adc返回都是true
			
	//var rg=/abc$/;只能是adc结尾返回都是true
			
	// 字符类:[]表示有一系列字符可以选择,只要匹配其中一个就可以了
	// var rg=/[abc]/;只要包含a或b或c返回的都是true
			
	// var rg=/^[abc]/;只能是a或者b或者c 三选一 才返回的true
			
	// var rg=/[a-z]/;只要是a到z范围返回的都是true
			
	// var rg=/[0-9]/;只要是0到9范围返回的都是true
			
	// var rg=/[A-Z]/;只要是A到Z范围返回的都是true
			

				字符组合

	var rg=/[a-zA-Z0-9-_]/;只要是数字,大小写字母(-_)范围返回的都是true
			
	// var rg=/[^a-zA-Z0-9-_]/;只要不是数字,大小写字母(-_)范围返回的都是true
	// 中括号里有^表示取反
	// 量次符
	// var reg=/^a*$/; a可以出现0次或者多次都是可以的
			 
	// var reg=/^a+$/; a出现大于等于1次才可以
			 
	// var reg=/^a?$/; a只能出现一次或者0次
			  
	// 量词之间不能有空格
	// var reg=/^a{
    
    3}$/; a只有重复3次才符合要求
			  		  
	 // var reg=/^a{
    
    3,}$/; a只有大于等于3次才符合要求
			   
	// var reg=/^a{
    
    3,6}$/; a只有大于等于3次并且小于等于6之间才符合要求

			  
		RegExp 对象属性

global RegExp 对象是否具有标志 g。

ignoreCase RegExp 对象是否具有标志 i。

lastIndex 一个整数,标示开始下一次匹配的字符位置。

multiline RegExp 对象是否具有标志 m。

source 正则表达式的源文本。

RegExp 对象方法

compile 编译正则表达式。

exec 检索字符串中指定的值。返回找到的值,并确定其位置。

test 检索字符串中指定的值。返回 true 或 false。

支持正则表达式的 String 对象的方法

search 检索与正则表达式相匹配的值。

match 找到一个或多个正则表达式的匹配。

replace 替换与正则表达式匹配的子串。

split 把字符串分割为字符串数组。

	一、校验数字的表达式
 1. 数字:^[0-9]*$
 2. n位的数字:^\d{
    
    n}$
 3. 至少n位的数字:^\d{
    
    n,}$
 4. m-n位的数字:^\d{
    
    m,n}$
 5. 零和非零开头的数字:^(0|[1-9][0-9]*)$
 6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{
    
    1,2})?$
 7. 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{
    
    1,2})?$
 8. 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
 9. 有两位小数的正实数:^[0-9]+(.[0-9]{
    
    2})?$
 10. 有1~3位小数的正实数:^[0-9]+(.[0-9]{
    
    1,3})?$
 11. 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){
    
    1,3}$ 或 ^\+?[1-9][0-9]*$
 12. 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
 13. 非负整数:^\d+$ 或 ^[1-9]\d*|0$
 14. 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
 15. 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
 16. 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
 17. 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
 18. 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
 19. 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
 
 
二、校验字符的表达式
 1. 汉字:^[\u4e00-\u9fa5]{0,}$
 2. 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
 3. 长度为3-20的所有字符:^.{3,20}$
 4. 由26个英文字母组成的字符串:^[A-Za-z]+$
 5. 由26个大写英文字母组成的字符串:^[A-Z]+$
 6. 由26个小写英文字母组成的字符串:^[a-z]+$
 7. 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
 8. 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
 9. 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
 10. 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
 11. 可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+12 禁止输入含有~的字符:[^~\x22]+
 
 

三、特殊需求表达式
 1. Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
 2. 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
 3. InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
 4. 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
 5. 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{
    
    3,4}-)|\d{
    
    3.4}-)?\d{
    
    7,8}$
 6. 国内电话号码(0511-4405222、021-87888822):\d{
    
    3}-\d{
    
    8}|\d{
    
    4}-\d{
    
    7}
 7. 身份证号(15位、18位数字):^\d{
    
    15}|\d{
    
    18}$
 8. 短身份证号码(数字、字母x结尾):^([0-9]){
    
    7,18}(x|X)?$ 或 ^\d{
    
    8,18}|[0-9x]{
    
    8,18}|[0-9X]{
    
    8,18}?$
 9. 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{
    
    4,15}$
 10. 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{
    
    5,17}$
 11. 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{
    
    8,10}$?
 12. 日期格式:^\d{
    
    4}-\d{
    
    1,2}-\d{
    
    1,2}
 13. 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
 14. 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
 15. 钱的输入格式:
  1) 有四种钱的表示形式我们可以接受:"10000.00"?和?"10,000.00", 和没有?"分"?的?"10000"?和?"10,000":^[1-9][0-9]*$
  2) 这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$
  3) 一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$
  4) 这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$
  5) 必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是?"10"?和?"10.2"?是通过的:^[0-9]+(.[0-9]{
    
    2})?$
  6) 这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{
    
    1,2})?$
  7) 这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{
    
    1,3}(,[0-9]{
    
    3})*(.[0-9]{
    
    1,2})?$
  8) 1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{
    
    1,3}(,[0-9]{
    
    3})*)(.[0-9]{
    
    1,2})?$
   备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里
 16. xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
 17. 中文字符的正则表达式:[\u4e00-\u9fa5]
 18. 双字节字符:[^\x00-\xff]??? (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
 19. 空白行的正则表达式:\n\s*\r??? (可以用来删除空白行)
 20. HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />??? (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)
 21. 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$)??? (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
 22. 腾讯QQ号:[1-9][0-9]{
    
    4,}??? (腾讯QQ号从10000开始)
 23. 中国邮政编码:[1-9]\d{
    
    5}(?!\d)??? (中国邮政编码为6位数字)
 24. IP地址:\d+\.\d+\.\d+\.\d+??? (提取IP地址时有用)
 25. IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){
    
    3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)

猜你喜欢

转载自blog.csdn.net/m0_46188681/article/details/106266862