ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Javascript语言中的正则表达式以及RegExp的使用

2022-02-28 19:00:18  阅读:262  来源: 互联网

标签:正则表达式 Javascript zA url str RegExp Z0 reg


正则表达式简介:

正则表达式是一门简单语言的语法规范。通常用于字符串的信息处理,例如查询,提换,提取等。

正则表达式并不是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中的规则。


虽然繁琐,但应用广泛。 

标签:正则表达式,Javascript,zA,url,str,RegExp,Z0,reg
来源: https://blog.csdn.net/liranke/article/details/123188862

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有