正则表达式常见面试题

  1 . 给一个连字符串例如:get-element-by-id转化成驼峰形式。

var str = "get-element-by-id";
var reg = /-\w/g; // 匹配横杆以及之后的一个字符,全局匹配
console.log(str.replace(reg,function($0){
    return $0.slice(1).toUpperCase();
    // 匹配到到是-e -b -i 形式截取后一个字符转成大写 
}));

2 . 匹配二进制数字

var str = "10101111";
var reg = /^[01]+$/g;
console.log(reg.test(str));

3 . 非零的十进制数字 (有至少一位数字, 但是不能以0开头)

var str = "81";
var reg = /^[1-9][0-9]?$/g;
console.log(reg.test(str));

4 . 匹配一年中的12个月

var str = "12";
var reg = /^(0?[1-9]|1[0-2])$/g;
console.log(reg.test(str));

5 . 匹配qq号最长为13为

var str ="10009093283333";
var reg = /^[1-9][0-9]{4,12}$/g;
console.log(reg.test(str));

6 . 匹配常见的固定电话号码

var str = "000-12344562";
//  \(? 匹配左括号一次或0次然后以0开头后面加两个数字,再匹配右括号或空格或减号一次或0次,随后匹配8个数字
var reg = /\(?0\d{2}[) -]?\d{8}/g;
console.log(str.match(reg));
console.log(reg.test(str));

7 . 匹配ip地址

var str = "255.221.221.12";
// [01]?\d\d?表示匹配小于199的数,可以说两位数或一位数,2[0-4]\d表示从200到249,配合25[0-5]就表示小于255的数了。
var reg = /(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|2[0-4]\d|25[0-5])/g;
console.log(str.match(reg));
console.log(reg.test(str));

8 . 匹配用尖括号括起来的以a开头的字符串

var str = "<a herf='www.baidu.com'>";
var reg = /<a[^>]+>/g;
console.log(str.match(reg));
console.log(reg.test(str));

9 . 分割数字每三个以一个逗号划分

var str = "12345678901";
function numSplit(str){
    var re = /(\d)(?=(\d{3})+$)/g;
    //(\d{3})+$ 的意思是连续匹配 3 个数字,且最后一次匹配以 3 个数字结尾。
    //要找到所有的单个字符,这些字符的后面跟随的字符的个数必须是3的倍数,并在符合条件的单个字符后面添加,
    return str.replace(re,'$1,');
}
console.log(numSplit(str));

扫描二维码关注公众号,回复: 14133883 查看本文章

1.由数字、26个英文字母或者下划线组成的字符串:
   

var str = "111ww_";
var reg = /^[0-9a-zA-Z_]{1,}$/g;
console.log(str.match(reg));
console.log(reg.test(str));


2.非负整数(正整数 + 0 ):
 

var str = "-101";
var reg = /^\d+$/g;

console.log(reg.test(str));//false


3. 正整数:
   

var str = "-101";
var reg = /^[0-9]*[1-9][0-9]*$/g;

console.log(reg.test(str));//false


4.非正整数(负整数 + 0):
   

var str = "0";
var reg = /^((-\d+)|(0+))$/g;

console.log(reg.test(str));//true


5. 负整数 :
   

^-[0-9]*[1-9][0-9]*$


6.整数:    

 ^-?/d+$


7.非负浮点数(正浮点数 + 0):

 ^/d+(/./d+)?$


8.正浮点数 :

 ^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$


9. 非正浮点数(负浮点数 + 0):

^((-/d+(/./d+)?)|(0+(/.0+)?))$


10.负浮点数 :

^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$


11. 浮点数 :

^(-?/d+)(/./d+)?$


12.由26个英文字母组成的字符串 :    

^[A-Za-z]+$


13. 由26个英文字母的大写组成的字符串 :

^[A-Z]+$


14.由26个英文字母的小写组成的字符串 :

^[a-z]+$


15. 由数字和26个英文字母组成的字符串 :

^[A-Za-z0-9]+$


16.由数字、26个英文字母或者下划线组成的字符串 :    

^/w+$


17.email地址 :

var str = "[email protected]";
var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/g;

console.log(reg.test(str));//true


18.url:    

使用说明:

(1)、地址必须以http/https/ftp/ftps开头;

(2)、地址不能包含双字节符号或非链接特殊字符。

var str = "http://www.baidu.com";
var reg = /^((ht|f)tps?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?$/g;


console.log(reg.test(str));//true

匹配:

(1)、直接匹配域名地址:

1

2

var matchString = 'https://i.cnblogs.com/';

console.log(match.test(matchString)); // ==> true

(2)、匹配链接含(*.htm,*.html,*.php,*.aspx...)后缀的地址:

1

2

var matchString = 'https://i.cnblogs.com/EditPosts.aspx';

console.log(match.test(matchString)); // ==> true

(3)、匹配含参数的地址:

1

2

var matchString = 'https://i.cnblogs.com/EditPosts.aspx?opt=1';

console.log(match.test(matchString)); // ==> true

19. 年-月-日:

/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/


20.月/日/年:

/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/


21.Emil:

^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$


22. 电话号码:

(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?


23.IP地址:

^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$


24. 匹配中文字符的正则表达式:

[/u4e00-/u9fa5]


25.匹配双字节字符(包括汉字在内):

[^/x00-/xff]


26. 匹配空行的正则表达式:

/n[/s| ]*/r


27.匹配HTML标记的正则表达式:

/<(.*)>.*<///1>|<(.*) //>/


28.匹配首尾空格的正则表达式:

(^/s*)|(/s*$)


29.匹配Email地址的正则表达式:

/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)


   
30. 匹配网址URL的正则表达式:

^[a-zA-z]+://(//w+(-//w+)*)(//.(//w+(-//w+)*))*(//?//S*)?$


31. 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):

^[a-zA-Z][a-zA-Z0-9_]{4,15}$


32. 匹配国内电话号码:

(/d{3}-|/d{4}-)?(/d{8}|/d{7})?


33.匹配腾讯QQ号:

^[1-9]*[1-9][0-9]*$


34. 只能输入数字:

^[0-9]*$


35.只能输入n位的数字:

^/d{n}$


36.只能输入至少n位的数字:

^/d{n,}$


37.只能输入m~n位的数字:

^/d{m,n}$


38.只能输入零和非零开头的数字:

^(0|[1-9][0-9]*)$


39.只能输入有两位小数的正实数:

^[0-9]+(.[0-9]{2})?$


40. 只能输入有1~3位小数的正实数:

^[0-9]+(.[0-9]{1,3})?$


41.只能输入非零的正整数:

^/+?[1-9][0-9]*$


42. 只能输入非零的负整数:

^/-[1-9][0-9]*$


43.只能输入长度为3的字符:

^.{3}$


44. 只能输入由26个英文字母组成的字符串:

^[A-Za-z]+$


45.只能输入由26个大写英文字母组成的字符串:

^[A-Z]+$


46. 只能输入由26个小写英文字母组成的字符串:

^[a-z]+$


47.只能输入由数字和26个英文字母组成的字符串:

^[A-Za-z0-9]+$


48. 只能输入由数字和26个英文字母或者下划线组成的字符串:

^/w+$


49.验证用户密码(正确格式为: 以字母开头,长度在5~17 之间,只能包含字符、数字和下划线)

^[a-zA-Z]/w{5,17}$


50.验证是否包含有 ^%&',;=?$/"等字符:

[^%&',;=?$/x22]+


51.只能输入汉字:

^[/u4e00-/u9fa5]{0,}$


52、只含有汉字、数字、字母、下划线不能以下划线开头和结尾

^(?!_)(?!.*?_$)[a-zA-Z0-9_/u4e00-/u9fa5]+$


53、只含有汉字、数字、字母、下划线,下划线位置不限

^[a-zA-Z0-9_/u4e00-/u9fa5]+$


54、2~4个汉字

@"^[/u4E00-/u9FA5]{2,4}$


 

资料:

常见的正则表达式面试题2 - 大牛半路出家 - 博客园附:常用正则表达式: 1.由数字、26个英文字母或者下划线组成的字符串: ^[0-9a-zA-Z_]{1,}$ 2.非负整数(正整数 + 0 ): ^/d+$ 3. 正整数: ^[0-9]*[1-9]https://www.cnblogs.com/dream111/p/13485501.html

猜你喜欢

转载自blog.csdn.net/qq_22182989/article/details/124641379