正则表达式简介:
正则表达式是一门简单语言的语法规范。通常用于字符串的信息处理,例如查询,提换,提取等。
正则表达式并不是Javascript语言独有的。正则表达式相较于String等具有更快的运算效率。
在Javascript中,regexp和string都可以处理正则表达式。
下面是一个简单的正则表达式:
//匹配数字
^[0-9]*$
Javascript正则表达式举例:
Javascript语言中提供了regexp和string对字符串进行处理。这里,只讨论前者的使用;
例子1:数字匹配检测:
function isNumber(data) {
var reg_str = /^[0-9]*$/;
var is_number = reg_str.test(data);
console.log(is_number);
}
//测试代码
function test_reg(){
isNumber(123); //true
isNumber(\"a12\");//false
}
Javascript中,正则表达式必须写在一行;
用“/” 和“/”进行首尾标记。
例子2:url匹配检测:
function isUrl (url) {
var reg_str = /^(https?:\\/\\/(([a-zA-Z0-9]+-?)+[a-zA-Z0-9]+\\.)+(([a-zA-Z0-9]+-?)+[a-zA-Z0-9]+))(:\\d+)?(\\/.*)?(\\?.*)?(#.*)?$/;
return reg_str.test(url);
}
//测试代码:
function test_url(){
url = \"https://news.sina.com.cn/w/2022-02-28/doc-imcwipih5695932.shtml\";
res1 = isUrl(url);
console.log(\"res1:\");
console.log(res1); //true
}
先设置匹配规则,放在reg_str中,然后,使用reg_str.test(url)来进行url的check。
使用正则表达式进行url的解析:
再看如何解析:
function parseUrl(url) {
var reg_str = /^(https?:\\/\\/(([a-zA-Z0-9]+-?)+[a-zA-Z0-9]+\\.)+(([a-zA-Z0-9]+-?)+[a-zA-Z0-9]+))(:\\d+)?(\\/.*)?(\\?.*)?(#.*)?$/;
var is_url = reg_str.test(url);
if (is_url ==true) {
//parse
var url_array = reg_str.exec(url);
console.log(url_array);
}
}
//测试代码:
function test_url(){
url = \"https://news.sina.com.cn/w/2022-02-28/doc-imcwipih5695932.shtml\";
parseUrl(url);
}
运行结果:从网页的console可以看到如下运行结果:
[
\"https://news.sina.com.cn/w/2022-02-28/doc-imcwipih5695932.shtml\",
\"https://news.sina.com.cn\",
\"com.\",
\"co\",
\"cn\",
\"c\",
null,
\"/w/2022-02-28/doc-imcwipih5695932.shtml\",
null,
null
]
输出结果是一个数组。
使用RegExp进行url的匹配检测:
可以使用new RegExp来创建一个正则表达式的对象,用这个对象提供的方法进行url的匹配。
更复杂全面的一个url正则匹配:
function checkUrl (str_url) {
var strRegex = \'^((https|http|ftp|rtsp|mms)?://)\'
+ \'?(([0-9a-z_!~*\\\'().&=+$%-]+: )?[0-9a-z_!~*\\\'().&=+$%-]+@)?\' //ftp的user@
+ \'(([0-9]{1,3}.){3}[0-9]{1,3}\' // IP形式的URL- 192.192.40.180
+ \'|\' // 允许IP和DOMAIN(域名)
+ \'([0-9a-z_!~*\\\'()-]+.)*\' // 域名- www.
+ \'([0-9a-z][0-9a-z-]{0,61})?[0-9a-z].\' // 二级域名
+ \'[a-z]{2,6})\' // first level domain- .com or .museum
+ \'(:[0-9]{1,4})?\' // 端口- :80
+ \'((/?)|\' // a slash isn\'t required if there is no file name
+ \'(/[0-9a-z_!~*\\\'().;?:@&=+$,%#-]+)+/?)$\';
var re=new RegExp(strRegex);
if (re.test(str_url)) {
return (true);
} else {
return (false);
}
}
这个例子中,对我们常用的正则规则几乎都包含进去了。包括http,https,ftp等等常用的请求类型;以及ip地址,端口,域名等可能出现在url中的规则。
虽然繁琐,但应用广泛。
来源:https://blog.csdn.net/liranke/article/details/123188862
本站部分图文来源于网络,如有侵权请联系删除。