本文摘自这学期在学校的线上 educoder 平台学习的 js 课程,把正则表达式部分的讲义整理了出来。
正则表达式
var lowerCharPattern = /[a-z]/;//匹配任意小写字母
var upperCharPattern = /[A-Z]/;//匹配任意大写字母
var numberPattern = /[0-9]/;//匹配任意数字
var mixPattern = /[a-zA-Z0-9]/;//匹配大小写字母,数字
在中括号内最前面加上^
符号表示反向匹配:匹配和中括号内的正则表达式不匹配的所有字符,比如:
var notNumberPattern = /[^09]/;
notNumberPattern.test("123");//false
notNumberPattern.test("ahc");//true
字符类还有一种较为简单的表示方法,比如\d
和[0-9]
的含义相同:表示任意的数字。下面用表格列出:
字符 | 匹配 | 等价于 |
---|---|---|
\w | 大小写字符或数字 | [a-zA-Z0-9] |
\W | 非字母,非数字 | [^a-zA-Z0-9] |
\d | 数字 | [0-9] |
\D | 非数字 | [^0-9] |
//表示数字后面紧跟着一个小写字母
var pattern = /[0-9][a-z]/;
pattern.test("1a");//true
pattern.test("11a");//true
pattern.test("a1");//false
重复
重复表示指定的字符或者字符串(本关可以简单理解为前面紧邻的字符)可以连续出现多次。比如匹配含有100
个字母a
的字符串,在这个字符串中,a
连续出现100
次,用正则表达式表示为:
var pattern = /a{100}/;//匹配100个连续的字母a组成的字符串
有多种表示重复的方法:
{a,b}
中的a
和b
都是数字,表示前面的字符至少出现a
次,最多出现b
次;
var pattern = /at{1,2}/;//表示a后面最少一个t,最多两个tpattern.test("at");//truepattern.test("att");//truepattern.test("am");//false
{a,}
表示前面的字符至少出现a
次,最多不限制;
var pattern = /[0-9]{4,}/;//匹配最少四个数字pattern.test("1234");//truepattern.test("1");//false
{a}
表示前面的字符出现a
次;
var pattern = /[a-z]{1}/;//匹配单个小写字母pattern.test("r");//truepattern.test("12R");//false
?
,表示前面的字符出现一次或者不出现,等价于{0,1}
;
var pattern = /A[0-9]?A/;//匹配两个A之间有0或1个数字pattern.test("AA");//truepattern.test("A0A");//truepattern.test("A01A");//false
+
,表示前面的字符至少出现一次,等价于{1,}
;
var pattern = /js+/;//匹配j后面最少一个spattern.test("jsjs");//truepattern.test("java");//false
*
&#x