正則表達(dá)式

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

  • \d :查找數(shù)字
  • \w:查找單詞字符(字母,數(shù)字,下劃線)
  • [a-zA-Z0-9]: a-z A-Z 0-9的字符
  • \b:單詞邊界(設(shè)在前面就是開頭,后面就是結(jié)尾)
  • . : 任何字符(除換行)
  • *:貪婪模式,表示匹配任何包含零個或多個 n 的字符串
  • +:表示匹配任何包含至少一個 n 的字符串
  • ?: 非貪婪模式,表示匹配任何包含零個或一個 n 的字符串
  • x{3} 匹配長度至少為3個x的字符串
  • ^$ : 匹配開頭為$的字符串

2. 貪婪模式和非貪婪模式指什么?

貪婪模式指的是正則表達(dá)式在滿足條件的情況下,盡可能多的去匹配項。
例如指{n,m}、+、*
非貪婪模式指的是盡可能少的去匹配,在正則表達(dá)式后面用?表示

代碼

1.寫一個函數(shù)trim(str),去除字符串兩邊的空白字符

function trim(str){
  return str.replace (/^\s+|\s+$/g,'');
  
task-21-1測試結(jié)果.png

** 2.使用實現(xiàn) addClass(el, cls)、hasClass(el, cls)、removeClass(el,cls),使用正則**

function hasClass(el,cls){
  var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)','g');  
  return reg.test(el.className)
function addClass(el,cls){
   var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)','g'); 
   if(!hasClass(el,cls){
    return el.className+''+cls
  }
}
function removeClass(el,cls){
   var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)','g');  
   if(!hasClass(el,cls){
    return el.className.replace(cls,'');
  }
}
console.log(hasClass(obj,'abc'));
console.log(addClass(obj,'abc'));
console.log(removeClass(obj,'hello'));  

3.寫一個函數(shù)isEmail(str),判斷用戶輸入的是不是郵箱

function isEmail(str){
  var patt = /\S+@\S+\.\S/  //這里的\.是為了轉(zhuǎn)義,單純的匹配一個.
  retrun patt.test(str)
task-21-3測試結(jié)果.png

** 4.寫一個函數(shù)isPhoneNum(str),判斷用戶輸入的是不是手機(jī)號**

function isPhoneNum(str){
  var patt = /^1[0-9]{10}$/
  return patt.test(str)
task-21-4.png

** 5.寫一個函數(shù)isValidUsername(str),判斷用戶輸入的是不是合法的用戶名(長度6-20個字符,只能包括字母、數(shù)字、下劃線)**

function isValidUsername(str){
  var patt = /^\w{6,20}$/
  retrun patt.test(str)
task-21-5測試結(jié)果.png

** 6.寫一個函數(shù)isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個字符,只包括大寫字母、小寫字母、數(shù)字、下劃線,且至少至少包括兩種)**

function isValidPassword(str){
  var patt = /^\w{6,20}$/;
  if(!patt.test(str){
    return '這不是合法密碼!'
    }
if (/(^[A-Z]+$)|(^[a-z]+$)|(^[0-9]+$)|(^_+$)/g.test(str)){
  return '這不是合法密碼!'
 }
return '輸入正確'
}
var str = 'abcabcabc';
console.log(isValidPassword(str));
str = 'abc';
console.log(isValidPassword(str));
str = 'abc2314__';
console.log(isValidPassword(str));
task-21-6測試結(jié)果.png

7.寫一個正則表達(dá)式,得到如下字符串里所有的顏色(#121212)

var re = /#[A-f0-9]{6}/
var subj = "color: #121212; background-color: #AA00ef; width: 12px; 
bad-colors: f#fddee #fd2 "
alert( subj.match(re) ) // #121212,#AA00ef
task-21-7測試結(jié)果.png

8.下面代碼輸出什么? 為什么? 改寫代碼,讓其輸出hunger, world.

var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;
str.match(pat); 

這個代碼輸出了"hunger",hello,"world",因為.代表的是任何字符,而*這個代表的是多次匹配,也就是貪婪模式
我們可以修改成非貪婪模式,讓他輸出成hunger, world

var str = 'hello "hunger",hello "world";
var pat = /".*?"/g;
str.match(pat);
task-21-8測試結(jié)果.png

9.補全如下正則表達(dá)式,輸出字符串中的注釋內(nèi)容. (可嘗試使用貪婪模式和非貪婪模式兩種方法)

str = '.. <!-- My -- comment \n test --> .. <!----> .. '
re = /<!--[\w\W]*?-->/g;
str.match(re) // '<!-- My -- comment \n test -->', '<!---->'

10.補全如下正則表達(dá)式

var re = /<^[<>]+>/g // [^<>]的意思是查找任何不在方括號之間的字符,這里是補全的代碼
var str = '<> <a href="/"> <input type="radio" checked> <b>'
str.match(re) // '<a href="/">', '<input type="radio" checked>', '<b>'
task-21-10測試結(jié)果.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容