js正则表达式

正则表达式

创建

var reg = /<%>/g

  1. g :global 全文收索
  2. i :ingore case,忽略大小写,默认大小写敏感
  3. m:multiple lines,多行搜索

元字符

( [ { \ ^ $ | ) ? * + .

[]

[]表示一个字符
[a-z]在a-z中选择一个字符
[abc0123]在abc0123中选择一个字符
[0-9a-zA-Z]

^

[^abc]除了abc以外的字符

预定义类

空白字符

  • 回车
  • 换行
  • 制表
  • 空字符串
  1. . [^\r\n] 除了回车符和换行符之外的所有字符
  2. \d [0-9] 数字字符
  3. \D [^0-9] 非数字字符
  4. \s [\t\n\x0B\f\r] 空白符
  5. \S [^\t\n\x0B\f\r] 非空白符
  6. \w [a-zA-Z_0-9] 单词字符,字母、数字下划线
  7. \W [^a-zA-Z_0-9] 非单词字符

边界

^ 以xxx开头
匹配在开头的字符串
&以xxx结尾的
匹配在结尾的字符串
\b 单词边界 单词边界
\B 非单词边界不单单那包括空格 还包括制表符号

var str = "header clearfix active header-fixed"

str.match([]header[])

量词

字符 含义

  • ? 出现零次或一次(最多出现一次)
    • 出现一次或多次(至少出现一次)
    • 出现零次或多次(任意次)
  • {n} 出现n次
  • {n,m} 出现n到m次
  • {n,} 至少出现n次

匹配url

  • 只要是https:\或者http\都可以匹配
str.match(/https?:\/\/.+/g)

str.match(/^(https?)?/\/\.+/)

匹配电话

^1[3578]\d{9}$\

贪婪模式和非贪婪模式

 var str = 'a "witch" and her "broom" is one'
 str.match(/".*"/g)

在贪婪模式情况下,正则表达式回匹配尽量多的字符

 var str = 'a "witch" and her "broom" is one'
 str.match(/".*?"/g)

在非贪婪模式下,正则表达式回尽量少一点的匹配字符串

分组

  • *+作用的都是一个字符
  • 可以加一个括号

括号

前瞻

  • exp1(?=exp2) 匹配后面是exp2的exp1
  • exp1(?!exp2) 匹配后面不是exp2的exp1

正则表达式的相关方法

reg.test()

reg.exec(str)

var str = '123 456 789'
var reg = /\d{3}/
reg.exc(str)


什么是贪婪模式和非贪婪模式?

贪婪模式下,正则表达式会尽量多的匹配多个字符
在非贪婪模式下,正则表达式会尽量少的匹配字符

写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)。

function isValidUsername(str){
  if(str.match(/^\w{6,20}$/)!==null)
    return true
  else return false
}

console.log(isValidUsername('aaa1'))

写一个函数isPhoneNum(str),判断用户输入的是不是手机号。

function isPhoneNumber(str){
  if(str.match(/^1[3578]\d{9}$/)!==null)
    return true
  else return false
}

console.log(isPhoneNumber('13620305513'))

写一个函数isEmail(str),判断用户输入的是不是邮箱。

function isEmail(str){
  if(str.match(/^\w+@\w+\.\w+$/)!==null)
    return true
  else return false
}

console.log(isEmail('[email protected]'))

写一个函数trim(str),去除字符串两边的空白字符。

unction trim(str) {
  return str.replace(/^\s*|\s*$/g,"")
}

console.log(trim('   abc  as   '))

\d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分别是什么?

  • \d
    0-9的数字

  • \w
    [0-9a-zA-Z_]

  • \s
    空白符
    包括空格 换行符 制表符 回车符

  • [a-zA-Z0-9]

在a-zA-Z0-9选择一个字符

  • \b

单词边界

  • .

除了回车符和换行符以外的所有符号

量词 出现零次或多次

两次 至少出现一次

量词 最多出现一次

  • x{3}

出现3次x

  • ^

以xxx开头

  • $

以xxx结尾

你可能感兴趣的:(js正则表达式)