js基础练习题 正则
1.判断字符串是否包含数字
1
2
3
4
|
function containsNumber(str) { var b = /\d/; return b.test(str); }
|
\d 一个数字
\s 换行符,制表符,换页符等空白字符中的一个
\w 字母或数字或下划线中的一个
\D 一个非数字
\S 除换行符,制表符,换页符等空白字符中的一个
\W 除字母或数字或下划线中的一个
2.判断连续重复字母
给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false
1
2
3
|
function containsRepeatingLetter(str) { return /([a-zA-Z])\ 1 /.test(str); } |
()的作用
(1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
(2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
3.判断是否以元音字母结尾
1
2
3
|
function endsWithVowel(str) { return /[a,e,i,o,u]$/i.test(str); } |
^ 匹配字符串开始位置
$匹配字符串结束位置
g:代表可以进行全局匹配。
i:代表不区分大小写匹配。
m:代表可以进行多行匹配。
4.获取指定字符串
**给定字符串 str,检查其是否包含 3 个连续的数字 是连续3个数字,不是3个连续的数字
1、如果包含,返回最新出现的 3 个数字的字符串
2、如果不包含,返回 false**
1
2
3
4
5
6
7
8
|
function captureThreeNumbers(str) { var reg; if (reg = str.match(/(\d{3})/)){ return reg[0]; } else { return false ; } } |
{n} 表达式重复n次
{m,n} 表达式至少重复m次,最多重复n次
{m,} 表达式至少重复m次
? 匹配表达式0次或者1次
+表达式至少出现1次
* 表达式不出现或出现任意次
String.prototype.match 返回结果:
5.判断是否符合指定格式
**给定字符串 str,检查其是否符合如下格式
1、XXX-XXX-XXXX
2、其中 X 为 Number 类型**
1
2
3
|
function matchesPattern(str) { return /^(\d{ 3 }-){ 2 }\d{ 4 }$/.test(str); } |
首先:(\d{3}-) 重复了两次,所以是(\d{3}-){2}。即XXX-XXX-。
然后:d{4}。即XXXX。
最后,全局匹配,所以加上开始符^和结束符$。
6.判断是否符合 USD 格式
**给定字符串 str,检查其是否符合美元书写格式
1、以 $ 开始
2、整数部分,从个位起,满 3 个数字用 , 分隔
3、如果为小数,则小数部分长度为 2
4、正确的格式如:$1,023,032.03 或者 $2.03,错误的格式如:$3,432,12.12 或者 $34,344.3**
1
2
3
|
function isUSD(str) {
|
1
|
要多考虑整数部分只为0的情况,比如$0.23,所以|0很有必要 |
7.获取 url 参数
**获取 url 中的参数
1. 指定参数名称,返回该参数的值 或者 空字符串
2. 不指定参数名称,返回全部的参数对象 或者 {}
3. 如果存在多个同名参数,则返回数组**
// 获取 url 参数
function getUrlParam(sUrl, sKey) {
var arr={};
sUrl.replace(/\??(\w+)=(\w+)&?/g,function(match,p1,p2){
//console.log(match,p1,p2);
if(!arr[p1]){
arr[p1]=p2;
}
else {
var p=arr[p1];
arr[p1]=[].concat(p,p2);
}
})
if(!sKey)return arr;
else{
for(var ele in arr){
if(ele==sKey){return arr[ele];}
}
return "";
}
}