小練習(xí):
-
\d\w\s[a-zA-Z0-9]\b.*+?x{3}^$分別是什么?
| 正則表達(dá)式 | 含義 |
|---|---|
\d |
數(shù)字字符,等價(jià)于 [0-9] |
\w |
A-Z、a-z、0-9 和下劃線,等價(jià)于[A-Za-z_0-9] |
\s |
任何空白字符。 其中包括空格、制表符和換頁符,等價(jià)于[ \f\n\r\t\v] |
[a-zA-Z0-9] |
a-z、A-Z、0-9 |
\b |
單詞的邊界 |
. |
除換行符 \n之外的任何單個(gè)字符。 |
* |
0次或多次的字符或子表達(dá)式。 |
+ |
至少一次的字符或子表達(dá)式。 |
? |
0次或1次的字符或子表達(dá)式。 |
x{3} |
3個(gè)x序列的字符串 |
^ |
搜索字符串開始的位置,[^abc]則是取反向類 |
$ |
搜索字符串結(jié)尾的位置 |
- 寫一個(gè)函數(shù)trim(str),去除字符串兩邊的空白字符
function trim(str) {
return str.replace(/^\s+|\s+$/g, '');
}
- 寫一個(gè)函數(shù)isEmail(str),判斷用戶輸入的是不是郵箱
function isEmail(str) {
return /^\w+@[a-zA-Z0-9]+\.[a-z]{2,4}$/.test(str);
}
- 寫一個(gè)函數(shù)isPhoneNum(str),判斷用戶輸入的是不是手機(jī)號
function isPhoneNumber(str) {
return /^1\d{10}$/.test(str);
}
- 寫一個(gè)函數(shù)isValidUsername(str),判斷用戶輸入的是不是合法的用戶名(長度6-20個(gè)字符,只能包括字母、數(shù)字、下劃線)
function isValidUsername(str) {
return /^\w{6,20}$/.test(str);
}
- 寫一個(gè)函數(shù)isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個(gè)字符,只包括大寫字母、小寫字母、數(shù)字、下劃線,且至少至少包括兩種)
function isValidPassword(str) {
if (!/^\w{6,20}$/.test(str)) {
return false;
}
if (/^[A-Z]{6,20}$/.test(str)) {
return false;
}
if (/^[a-z]{6,20}$/.test(str)) {
return false;
}
if (/^[0-9]{6,20}$/.test(str)) {
return false;
}
if (/^_{6,20}$/.test(str)) {
return false;
}
return true;
}
- 寫一個(gè)正則表達(dá)式,得到如下字符串里所有的顏色
var reg = /#([0-9A-Fa-f]{6}|[0-9A-Fa-f]{3}(?=;))/g;
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee ";
console.log(subj.match(reg));
// ['#121212', '#AA00ef']
- 下面代碼輸出什么? 為什么? 改寫代碼,讓其輸出[""hunger"", ""world""].
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;
console.log(str.match(pat));
// [ '"hunger" , hello "world"' ]
// 貪婪模式下盡量匹配長的字符串
var pat = /".*?"/g;
console.log(str.match(pat));
// [ '"hunger"', '"world"' ]