-
Notifications
You must be signed in to change notification settings - Fork 74
/
Copy pathregexp.html
111 lines (97 loc) · 5.54 KB
/
regexp.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>
正则表达式使用
</title>
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
</head>
<body>
<h3>正则表达式使用:</h3>
<h2>正则相关教程:</h2>
<div><a href="https://www.baidufe.com/item/eb10deb92f2c05ca32cf.html" target="_blank">FeHelper 插件 正则教程</a></div>
<div><a href="https://www.runoob.com/regexp/regexp-tutorial.html" target="_blank">菜鸟吧 正则教程</a></div>
<script>
var str = '';
// 校验邮箱
str = '[email protected]';
var reg_email = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
var reg_email2 = /\S+@\S+\.\S+/;
reg_email.test(str);
// 校验手机号
str = '56465';
var reg_mobile = /^1\d{10}$/.test(str);
var reg_mobile2 = /[0-9]{4,15}/.test(str);
// 校验浮点型数字
str = '452.23';
var reg_float = /^([1-9]\d*|(0|[1-9]\d*)\.\d*[0-9])$/.test(str);
// 校验字符串是否含有中文
str = '100万';
var reg_cn = /[\u4e00-\u9fa5]/.test(str);
// 非正则获取中文个数(考虑特殊字符、奇怪字符)
function checkChinaCount(value){
var i = 0, result = 0;
for ( var i = 0; i < value.length; i++){
if (value.charCodeAt(i) <= 0 || value.charCodeAt(i) > 128){
result ++ ;
}
}
return result;
}
// 给所有String对象添加trim方法
String.prototype.trim = function(){
return this.replace(/(^\s*)|(\s*$)/g, "");
}
// 判断字符串是否符合IP地址
function testIP(str){
var arr = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(str);
if(arr==null) return false;
arr.shift();
for(i=1;i<arr.length;i++)if(String(Number(arr[i]))!=arr[i]||Number(arr[i])>255) return false;
return true;
}
// 用js实现一个电话号码提取的方法。
// 例如:" 1852145998 020-888-999845 测试 021 - 85421987, 19865754"
// 得到的结果应该是[1852145998, 020-888-999845 , 021 - 85421987, 19865754]
var str = ' 1852145998 020-888-999845 测试 021 - 85421987, 19865754';
var reg_no = /(\d{3}\s*-\s*?){0,2}\d{6,11}/g;
var _r = str.match(reg_no);
console.log(_r);
// match是返回所有匹配的字符串合成的数组,但是正则表达式必须指定全局g属性才能返回所有匹配,不指定g属性则会返回一个只有一个元素的数组。
// exec永远返回与第一个匹配相关的信息,其返回数组包括第一个匹配的字串,所有分组的反向引用。
// RegExp['$1'] 每当产生一个带括号的成功匹配时,$1...$9 属性的值就被修改。可以在一个正则表达式模式中指定任意多个带括号的子匹配,但只能存储最新的九个。
// https://msdn.microsoft.com/zh-cn/library/24th3sah(v=VS.94).aspx
var regArray = /(\w+)@(\w+)\.(\w+)/g.exec("Please send mail to [email protected] and [email protected]. Thanks!"); // ["[email protected]", "george", "contoso", "com"]
console.log(RegExp['$1']);
// 是否为url地址
var isUrl = /^https?:\/\//.test("http://www.sogou.com");
var getUrl = /(https?:\/\/)((\w|=|\?|\.|\/|&|-)+)[^\s]/i.exec('Report--Sexual content--โทรศัพท์เครื่องเก่า (Memories)--https://www.youtube.com/watch?v=amrOd3Ggpb4 how to ')[0];
console.log("isUrl:", isUrl);
// 是否为youtube地址
var isYoutube = /(?:www\.)?youtube.com\/watch\?(?=.*v=-{0,1}\w+)(?:\S+)?$/.test("https://www.youtube.com/watch?v=iI0U7_LzGlY");
// 是否包含字母、数字、_外其他特殊字符
var hasSpecialChar = /[(\ )(\~)(\!)(\@)(\#)(\$)(\%)(\^)(\&)(\*)(\()(\))(\-)(\_)(\+)(\=)(\[)(\])(\{)(\})(\|)(\\)(\;)(\:)(\')(\")(\,)(\.)(\/)(\<)(\>)(\?)(\)]+/.test("a");
//过滤特殊字符
// var str1 = str.replace(/[\'\"\\\/\b\f\n\r\t]/g, '');// 去掉转义字符, 回车等
// var str2= str.replace(/[\-\_\,\!\|\~\`\(\)\#\$\%\^\&\*\{\}\:\;\"\L\<\>\?]/g, '');// 去掉特殊字符
// return str2;
// 获取字符串中 脚本
var scriptReg = /<script[^>]*>[\s\S]*?<\/[^>]*script>/gi;
var hrefReg = /(window\.)?location\.href[\s]?=[\s]?(.*?)[;\s]/g;
// 判断苹果浏览器
var isSafri = /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);
// 判断谷歌浏览器
var isChrome = navigator.userAgent.match(/Chrome\/([\d.]+)/) || navigator.userAgent.match(/CriOS\/([\d.]+)/);
// 替换指定传入参数的值,oUrl为链接,paramName为参数,replaceWith为新值
function replaceParamVal (oUrl, paramName, replaceWith) {
var re = new RegExp('(' + paramName + '=)([^&]*)', 'gi')
var nUrl = oUrl.replace(re, paramName + '=' + replaceWith)
console.log('replaceParamVal:' + nUrl)
return nUrl
}
// 大写字母A-Z对应的ASCII码值是65-90, 小写字母a-z对应的ASCII码值是97-122
</script>
</body>
</html>