JS正则表达式

JS正则表达式

正则表达式的规则
一个具有特殊意义的字符串。
正则表达式在多种语言中都可以使用,

如:在 Java 中可以用正则表达式,在JavaScript 中也可以使用正则表达式。
\d 数字
\D 非数字
\w 单词:a-zA-Z0-9_     //注意包括下划线
\W 非单词
. 通配符,匹配任意字符
{n} 匹配 n 
{n,} 大于或等于 n 
{n,m}  n  m 之间
+ 1~n 
* 0~n 
? 0~1 
^ 匹配开头
$ 匹配结尾

[13579] 匹配 1  3  5  7  9,即这 5 个数字之一
[0-9] 匹配 1  9,即 0,1,2,3,4,5,6,7,8,9 中的数字之一

正则表达式的创建方式

方式一
var reg = new RegExp("正则表达式");
说明:正则表达式在 JS 中是一个对象。Regular Expression。

方式二
var reg = /正则表达式/;
说明:以/开头,以/结尾,中间是正则表达式。

//两种方式的区别
1_在 JS 中,正则表达式的两种声明方式对于“\d、\D”之类的匹配模式中,
方式一:需要转义;如:new RegExp(\\d”)
方式二:无需转义。如:/\d/
    
2_方式一:
支持字符串拼接,支持变量,更加灵活;如:new RegExp(\\d”+变量)

方式二:
对于固定的表达式,书写起来方便快捷、更加直观。如:/\d{3}/

匹配模式

i :忽略大小写比较
匹配模式的两种写法
var reg = new RegExp("正则表达式", "匹配模式");
如:new RegExp("abc","i");

var reg = /正则表达式/匹配模式; 如:/abc/i

正则表达式中的常用方法

boolean test("字符串") 如果正则表达式匹配字符串,返回 true,否则返回 false

var reg1 = new RegExp("\\d{3}");
var result1 = reg1.test("123");
var reg2 = /\d{3}/;
var result2 = reg2.test("123");
var reg3 = /java/i;
var result3 = reg3.test("Java");

JS 匹配上与 Java 中的不同

Java 默认情况下必须要精确匹配,
而在 JS 中默认是模糊匹配,只要字符串包含了正则表达式的内容就返回 true。

正则表达式 匹配字符串          Java 中匹配结果       JavaScript 中匹配结果
\d{3}       a123b           false               true
^\d{3}      123b            false               true
\d{3}$      a123            false               true

^\d{3}$ 推荐 123             true                true
^\d{3}$     123a123         false               false

请在 JS 中使用正则表达式进行验证。

用户名:只能由英文字母和数字组成,长度为 4~16 个字符,并且以英文字母开头
/^[a-zA-Z][a-zA-Z0-9]{3,15}$/
    
密码: 数字 6-20 个字符
/^[0-9]{6,20}$/
    
生日:生日的年份在 1900~2009 之间,
生日格式为 1980-5-12  1988-05-04 的形式,

/^((19\d{2})|(200\d))-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])$/
                       
匹配中文字符的正则表达式: /^[\u4e00-\u9fa5]$/


匹配双字节字符(包括汉字在内)/^[^\x00-\xff]$/

//可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:/^\n\s*\r$/  //可以用来删除空白行

匹配HTML标记的正则表达式:/^<(\S*?)[^>]*>.*?</\1>|<.*? />$/

匹配首尾空白字符的正则表达式:^\s*|\s*$

//可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)

匹配Email地址:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
    
电子邮箱:符合邮箱地址的格式
/^\w+@\w+(.\w{2,3}){1,2}$/
\w 等价于[a-zA-Z0-9_]

匹配网址URL的正则表达式:/^[a-zA-z]+://[^\s]*$/


匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)
                       ^[a-zA-Z][a-zA-Z0-9_]{4,15}$


匹配国内电话号码:/^\d{3}-\d{8}|\d{4}-\d{7}$/
//匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:/^[1-9][0-9]{4,}$/    //腾讯QQ号从10000开始

匹配中国邮政编码:/^[1-9]\d{5}(?!\d)$/

//中国邮政编码为6位数字

匹配身份证:/^\d{15}|\d{18}$/

//中国的身份证为15位或18位

匹配ip地址:/^\d+\.\d+\.\d+\.\d+$/

//提取ip地址时有用

匹配特定数字:

^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$   //匹配负整数
^-?[1-9]\d*$   //匹配整数
^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)


匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript正则表达式和Java正则表达式在语法上有一些差异,但是它们的基本概念和用法是相似的。下面是将JavaScript正则表达式转换为Java正则表达式的一些常见规则: 1. 语法差异: - JavaScript正则表达式使用斜杠(/)作为定界符,而Java正则表达式使用双引号(")作为定界符。 - JavaScript正则表达式中的特殊字符需要进行转义,而Java正则表达式中的特殊字符不需要转义。 2. 字符类: - JavaScript正则表达式中的字符类使用方括号([])表示,而Java正则表达式中使用方括号([])或者Unicode转义(\p{...})表示。 - JavaScript正则表达式中的字符类可以使用连字符(-)表示范围,而Java正则表达式中需要使用Unicode转义(\uXXXX)表示范围。 3. 量词: - JavaScript正则表达式中的量词使用花括号({})表示,而Java正则表达式中使用花括号({})或者问号(?)表示。 - JavaScript正则表达式中的贪婪量词默认是贪婪模式,而Java正则表达式中的贪婪量词需要在后面添加问号(?)来表示非贪婪模式。 4. 边界匹配: - JavaScript正则表达式中的边界匹配使用插入符号(^)和美元符号($)表示,而Java正则表达式中使用\A和\Z表示。 5. 其他差异: - JavaScript正则表达式中的捕获组使用圆括号(())表示,而Java正则表达式中使用圆括号(())或者方括号([])表示。 - JavaScript正则表达式中的反向引用使用反斜杠加数字(\1、\2等)表示,而Java正则表达式中使用美元符号加数字($1、$2等)表示。 以上是一些常见的JavaScript正则表达式转换为Java正则表达式的规则。具体转换时,还需要根据具体的正则表达式进行适当的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值