zoukankan      html  css  js  c++  java
  • 正则表达式

    正则表达式的一些方法:

    test方法:查找字符串中是否匹配正则表达式,如果匹配返回结果是:true,否则返回false;形式:reg.test(str)

    exec方法:查找匹配的正则表达式

         如果匹配的话返回结果是一个数组,数组0元素是整个的匹配,1-n元素是各个子匹配,数组有三个属性:

          input:返回整个字符串,

          index:返回匹配的子字符串在整个字符串的位置

          lastIndex:返回匹配的子字符串最一个字符的下一个字符

        如果不匹配的话返回的是值是null

        有全局识志(g)与没有全局标识符的话,区别很大,第一次调用的话返回The,第二次调用返回rain,第三次调用返回in...,如果没有的话不管调用多少

        次返回的都是the,

            var src = "The rain in Spain falls mainly in the plain.";
            var re = /\w+/g;    
            var arr;
            alert(src.match(re))//有g的话,返回[The,rain,in,Spain,falls,mainly,in,the,plain.]如果没有g的话则返加[The]

            var u="http://msdn.microsoft.com:80/scripting/default.htm";
            var s=/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;
            var a=s.exec(u);
            for(i=1;i<a.length;i++){
                alert(a[i]);
            }//这个数组的每个元素是各个分组中的内容,有g没g都一样

    match方法:结果是返回一个数组,如果有全局标识符的话,有g的话,返回[The,rain,in,Spain,falls,mainly,in,the,plain.]如果没有g的话则返加[The],形

          式:str.match(reg)

    search方法:返回匹配的的字符串的首字符在整个表达式中的偏移位置,如果不匹配的话则返回-1,形式:str.search(reg),有没有全局标识符都一样

    split()方法:结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解。separator 不作为任何数组元素的部分返回。有个例外的地方:

          <textarea id="txtArea"></textarea>

          <script language="javascript">
            $("#txtArea").click(function(){
                  alert(document.getElementById("txtArea").value.split(/(\n|\r)/g).length)
          })
          </script>

          正则表达式中有分组时则将匹配的结果也作为数组的一部分返回,匹配的空格也作为数组一部分返回,正确形式:/\n|\r/g,

    以下是常用的一些匹配规则:

    匹配中文字符的正则表达式: [\u4e00-\u9fa5]
    匹配双字节字符(包括汉字在内):[^\x00-\xff]
    匹配空行的正则表达式:\n[\s| ]*\r
    匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
    匹配首尾空格的正则表达式:(^\s*)|(\s*$)(像vbscript那样的trim函数)
    匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
    匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
    以下是例子:
    利用正则表达式限制网页表单里的文本框输入内容:
    用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,")"
    onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,"))"

    1.用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,")"
    onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,"))"

    2.用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,")
    “onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,"))"

    3.用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,")
    “onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,"))"

    4.字符串的replace:

    str.replace(/(<(\w+)[^>]*?\/>)/g,function(all, front, tag){})这个是匹配标签符例<div/>,all表示总个匹配,front表示第一个分组,tag表示第二个分组

    5.cookie中取值

    reg = /(?:^|;)cookieName([^;]*)/

    6.url中取值

    reg = /[?&]keyName=([^&]*)/

    7.className的变换

    document.getElementById('aa').className += 'className'

    document.getElementById('aa').className =

    document.getElementById("MyElement").className.replace(/(?:^|\s)MyClass(?!\S)/,'');
  • 相关阅读:
    Docker常用基础命令详解
    Docker安装教程(超详细)
    IDEA 新建 Java 项目 (图文讲解, 良心教程)
    SpringBoot2.0之@Configuration注解
    idea的安装和无限期试用
    vue 取消上次请求
    calc()使用通用的数学运算规则,但是也提供更智能的功能:
    pdfh5 移动端 查看pdf
    Git处理Failed to connect to www.google.com port 80: Timed out
    对象排序
  • 原文地址:https://www.cnblogs.com/xiaohui108/p/1889168.html
Copyright © 2011-2022 走看看