正则表达式知识点(一)

旧城等待, 2021-06-26 16:06 1341阅读 0赞

1. 关于有效数字的正则表达式

两位有效数字 :

  1. /^[1-9]\d{1}$|^[1-9]\.\d{1}$|^0\.0*[1-9]{2}$/

三位有效数字:

  1. /^[1-9]\.?\d{2}$|^[1-9]{2}\.\d{1}$|^0\.0*[1-9]{3}$/

四位有效数字:

  1. /^[1-9]\.?\d{3}$|^[1-9]{2}\.\d{2}$|^[1-9]{3}\.\d{1}$|^0\.0*[1-9]{4}$/

五位有效数字

  1. var pt = /(^\d{1,6}$)|(^\d{1,4}(\.\d{1})$)|(^\d{1,3}(\.\d{2})$)|(^\d{1,2}(\.\d{3})$)|(^\d{1}(\.\d{4})$)/;

以此类推。。。


2. 小数位数不能超过三位

  1. //验证值小数位数不能超过三位
  2. jQuery.validator.addMethod("three",
  3. function(value, element) {
  4. var three = /^-?\d+(\.\d{1,3})?$/;
  5. return this.optional(element) || (three.test(value));
  6. },
  7. $.validator.format("小数位数不能超过三位!"));

在这里插入图片描述

6位整数或小数点最多两位

  1. /(^[0-9]{1,6}$)|(^[0-9]{1,6}[\.]{1}[0-9]{1,2}$)/.test(123456.11)
  2. /**** true *****/
  3. /(^[0-9]{1,6}$)|(^[0-9]{1,6}[\.]{1}[0-9]{1,2}$)/.test(123456.123)
  4. /**** false *****/

在这里插入图片描述
15位有效数字,保留2位小数,整数可以输入15位且首位不能为0

  1. ^[1-9](?:\d{ 14}\.\d{ 2}|\d{ 14})$

在这里插入图片描述


2位整数2位小数

  1. function checktwo(valuen)
  2. {
  3. var pt = /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/;
  4. if (valuen!= null && pt.test(valuen))
  5. {
  6. return true;
  7. } else
  8. {
  9. return false;
  10. }
  11. }

匹配Json

  1. sTitle": "(.*?)"

js 验证文本框只能输入数字和小数点

  1. function check(e) {
  2. var re = /^\d+(?=\.{0,1}\d+$|$)/
  3. if (e.value != "") {
  4. if (!re.test(e.value)) {
  5. alert("请输入正确的数字");
  6. e.value = "";
  7. e.focus();
  8. }
  9. }
  10. }

第二步、调用【加粗的都要有】

  1. <input type="text" id="achievementScore" class="tab_bor2" name="scoreCheck.achievementScore" onblur="check(this)" onkeyup="this.value=this.value.replace(/[^0-9.]/g,'')" />

VS里正则匹配///内容

  1. ///(.{1,})

3. 正则表达式中量词*?同时出现时的匹配规则是什么?

背景描述:
现有一个json字符串:

  1. { { "name":"frank"},{ "age":22},{ "sex":"man"}}

需要匹配出{"name":"frank"}{"age":22}格式的内容;

当我的正则表达式为:

  1. \{ ".*\}

在这里插入图片描述
匹配出的内容如下:

  1. { "name":"frank"},{ "age":22},{ "sex":"man"}}

我对正则略做修改为:

  1. \{ ".*?\}

在这里插入图片描述

  1. { "name":"frank"}
  2. { "age":22}
  3. { "sex":"man"}

则可以匹配出正确的内容;

  1. .* 除换行符之外的任意单字符
  2. .*后跟?为非贪婪模式匹配
  3. 贪婪模式:正则的默认模式,即:满足条件直到结束。如字符:1111,如正则贪婪匹配1,则结果是1111
  4. 非贪婪模式:满足条件(首次)即结束。如字符:1111,如正则非贪婪匹配1,则结果是1
  5. .* 为匹配0次或1次或多次;.+ 为匹配一次或多次;.? 为匹配0次或1次
  6. 请理解.*?.? 的区别,区别请结合第2、3点

  1. /*字符串包含//格式*/
  2. function validStringRegex(str)
  3. {
  4. var pattern = /^(.*?)\/(.*?)\/(.*?)$/;
  5. if (str!= null && str!= "" && pattern.test(str))
  6. {
  7. return true;
  8. }
  9. return false;
  10. }

4. 正则^[a-zA-Z][^a-zA-Z]^[A-z]的区别

^[a-zA-Z]是去匹配目标字符串中以中括号中的a—z或者A—Z开头的字符

[^a-zA-Z]是去匹配目标字符串中非a—z也非A—Z的字符

这个是根据ASCII码表来的,a-z对应97-122,A-Z对应65-90,当然A-z就是对应65-122.
你会发现若写[a-zA-Z]不会包括91-96这几个,这几个依次代表[ \ ] ^ _、
在这里插入图片描述


5.正则-RegExp对象和replace()同时使用

  1. var re = /(\w+)\s(\w+)/;
  2. var str = "John Smith";
  3. var newstr = str.replace(re, "$2, $1");
  4. console.log(newstr);
  5. var text = "example-123-example";
  6. var pattern = /(-)(\d+)(-)/;
  7. var replaced = text.replace(pattern, "$1AA$3");
  8. console.log(replaced);
  9. var txt = "AAA12345678AAAA";
  10. //匹配到的连续数字的前4位用*替换
  11. var m = txt.replace(/(\d{4})(\d{1,})/, "****$2");
  12. console.log(m);
  13. var domainurl = "/jiangsu-uinaliyun/redis/price1/".replace(/(\w+)(aliyun|azure|aws|tencent)\/(\w+)\/?/,"jintian" + "$2/" + "mongodb/");
  14. console.log(domainurl);

结果如图:
在这里插入图片描述

6. 匹配MarkDown文章里的超链接

  1. \[(.*?)\]\((.*?)\)

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,1341人围观)

还没有评论,来说两句吧...

相关阅读

    相关 表达式基础知识

    一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个

    相关 表达式——(

    正则表达式 - 语法 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取