正则表达式

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

贪婪模式

一般情况下,正则表达式在匹配过程中会尽可能多的匹配

`ni hao "hello" jirengu "world"`.match(/".*"/g);  
//[""hello" jirengu "world""]

非贪婪模式

让正则表达式尽可能少的匹配,就是说一旦成功匹配不再继续尝试。在量词后加上+即可

`ni hao "hello" jirengu "world"`.match(/".*?"/g);  //[""hello" jirengu "world""] 
//[""hello"", ""world""]
字符 说明 示例
字符集/通配符 + 重复运算符 贪婪模式,匹配尽可能多的内容,能匹配多少就匹配多少 r'*(.+)*' =>能匹配 abab*
字符集/通配符 + 重复运算符 + “?” 非贪婪模式,匹配较少的内容,一旦匹配成功即退出匹配 r'*(.+)*' =>
只能匹配 ab

重复运算符 默认是贪婪模式的;重复运算符 + ? 能够将重复运算符指定为非贪婪模式的。

2.写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名

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

//写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
function isValidUsername(str){
  var reg = /^\w{6,20}$/g;   //6到20位以数字开头数字结尾的字符串
  return reg.test(str)
}
var str = "1dji22.dfefgdaER32i"
var 合法 = "合法"
var 不合法 = "不合法"
var 结果 = isValidUsername(str)?console.log(合法):console.log(不合法);
console.log(str.length)   //19
console.log(结果)   //不合法

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

//写一个函数isPhoneNum(str),判断用户输入的是不是手机号
function isPhoneNum(str){
  var reg = /^1\d{10}$/g;   //1开头,11位的数字
  return reg.test(str)
}
var str = "131111111d2"
var 是 = "是手机号"
var 不是 = "不是手机号"
var 结果 = isPhoneNum(str)?console.log(是):console.log(不是);
console.log(str.length)
console.log(结果)

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

//写一个函数isEmail(str),判断用户输入的是不是邮箱
function isEmail(str){
  var reg = /^.*@{1}.*(\.){1}.*$/g;   //中间包含1个@和1个.的任意长度字符串
  return reg.test(str)
}
var str = "j*[email protected]"
var 是 = "是邮箱"
var 不是 = "不是邮箱"
var 结果 = isEmail(str)?console.log(是):console.log(不是);
console.log(str.length)  
console.log(结果)   //是邮箱

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

//写一个函数trim(str),去除字符串两边的空白字符
function trim(str){
  var reg = /^\s*|\s*$/g;   //开头和结尾有多少个空白符都去掉
  return str.split(reg)
}
var str = "   djf iuh df jd "
var s = trim(str).join('')
console.log(s)  //djf iuh df jd

6. 以下分别是什么意思

\d   //数字字符
\w   //单词字符
\s   //空白符
[a-zA-Z0-9]   //包含0-9 a-z A-Z的字符
\b   //单词边界  匹配一个单词的边界,就是位于单词字符\w和非单词字符\W之间的位置,或者\w和他开头或者结尾之间的位置
.   //除换行符号和其他unicode行终止符外任意字符
*   //匹配前一项0次或者多次 等价于{0,}
+   //匹配前一项1次或者多次 等价于{1,}
?   //匹配前一项0次或者1次,等价于{0,1}
x{3}  //匹配x3次
^   //在[]内是取反,在[]外是表示匹配字符串的开头,在多行检索中,匹配一行的开头
$   //表示匹配字符串的结尾,在多行检索中,匹配一行的结尾

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