简单类:/abc/
必须是完整的,只能多不能少;即只需包含abc就可以。
- /abc/.test(str),判断str是否包含abc,如果包含则返回true,否则就返回false;
console.log(/chaoge/.test("chaoge")); //true
console.log(/chaoge/.test("chaog")); //false
console.info(/chaoge/.test("chacoge")); //false
预定义类/[abc]/
只要包含里面的任何一个就可以。
- /[abc].test(str)/:判断str是否包含a、b、c三个中的一个,包含了就返回true,否则返回false。
console.info(/[abc]/.test("abcd")); //true
console.info(/[abc]/.test("abc")); //true
console.info(/[abc]/.test("a")); //true
console.info(/[abc]/.test("qqq")); //false
负向类(不能是其中的整体或者一部分)
必须是在
中括号内
,前面加个元字符^
进行取反,不是括号里面的字符(一部分也不行)。
console.info(/[^abc]/.test('abc')); //false,是abc的整体
console.info(/[^abc]/.test('a')); //false,属于abc的一部分
console.info(/[^abc]/.test('abcd')); //true,比abc更多
console.info(/[^abc]/.test('aw')); //true,交集
console.info(/[^abc]/.test('ww')); //true,比abc更多
- 提示:这个^写在
[]
内才具有负向类的功能
范围类
有时匹配的东西过多,而且类型又相同,全部输入太麻烦,我们可以在中间加个横线。
- 例如/a-m/表示a、b、c……m等字母只要包含一个就行。
console.info(/a-m/.test("a-m")); //true,没有中括号,表示必须包含a-m
console.info(/a-m/.test("a-")); //false,没有中括号,表示必须包含a-m
console.info(/[a-m]/.test("gga")); //true,只要包含一个就行
组合类
用中括号匹配不同类型的单个字符,有数字,有字幕,有特殊字符就需要使用到组合来完成。
- /[a-m1-5]/.test(“b”):表示包含q、b、c….、m和1、2….、5等
console.info(/[a-m1-5]/.test("b"));
console.info(/[a-m1-5]/.test("2"));
console.info(/[a-m1-5]/.test("oooo"));
正则边界
^
会匹配行或者字符串的起始位置,这里要注意的地方是^
在[]
中才表示非,这里表示开始。
$
会匹配行或者字符串的结尾位置
^
和’$’一起使用时,则表示必须是这个(精确匹配)
- /^andy$/.test(str):要想返回true,则str必须是’andy’。
console.info(/^andy$/.test('andy')); //true
console.info(/^aandy$/.test('andy')); //false
console.info(/^andya$/.test('andy')); //false
console.info(/^anady$/.test('andy')); //false
console.info(/^ndy$/.test('andy')); //false
量词
*
:重复零次或更多+
:重复一次或更多次?
:重复零次或一次,要么有,要么没有{}
:重复多少次的意思,可以有多少个的,比如你的银行卡密码只能是6位,则用{6}
- {n}:n次(x=n)
- {n,}:重复n次或更多(x>=n)
- {n,m}:重复出现的次数比n多但比m少(n<=x<=m)
- *:{0,}
- +:{1,}
- ?:{0,1}
x|y:表示x或者y,注意在正则表达式中是没有&的。
():提高权限,有限计算。
replace函数
replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。return返回的是新字符串。
☆ 需要匹配的对象.replace(正则式/匹配模式,替换的目标字符) ☆
- 正则表达式的匹配模式支持的2个标志
- g:表示全局模式(global),即将需要匹配的对象全部寻找匹配。
- i:表示不区分大小写(ease-insensitive)模式,在确定匹配对象时忽略大小写查找替换。
var txt = "today is a fine day!";
console.info(txt.replace(/today/,"tomorrow")); //tomorrow is a fine day!
console.info(txt); //txt不变,today is a fine day!
var txt1 = "today is a fine day!today is a fine day!";
console.info(txt1.replace(/today/g, "tomorrot")); //tomorrot is a fine day!tomorrot is a fine day!
var txt2 = "JavaScript is a fine";
console.info(txt2.replace(/javascript/,"javascript")); //JavaScript is a fine
console.info(txt2.replace(/javascript/i,"javascript")); //javascript is a fine
封装自己的trim函数
function trim(str) {
return str.replace(/(^\s+)|(\s+$)/g,""); // 去掉前面和后面的空格
}