正则应用

首先统计每一个字符出现的次数,并且统计出maxNum的输出
var str = "hsahsjafjshfjshafjksh",obj = {};
str.replace(/w/g,function()){
var key = argument[0];
if(obj[key]>=1){
obj[key]++;
return;
}
obj[key]=1;
};console.log(obj);->实现统计每一个字符出现的次数;
var  maxNum = 0;
for (var key in obj){
if(obj.hasOwnproperty(key)){
obj[key]>maxNum?maxNum = obj[key]:null;
   }
}
var res = "最多出现"+maxNum+"次 出现的字符:";
for(key in obj){
if(obj.hasOwnproperty(key)){
 obj[key] ===maxNum ? res+= key+“ ”:null;
  }
obj = null;
console.log(res);
}
单词首字母大写
str = "my name is zhou xiao tian,my age is twenty five years old~~";
str = str.replace(/\w+/g, function () {
    var res = arguments[0];
    return res.substr(0, 1).toUpperCase() + res.substr(1);
});
console.log(str);
格式化时间//->"2015年05月03日 12时09分13秒"

//    str = "2015-05-03 12:09:13";//    str = str.replace(/^(\d+)-(\d+)-(\d+) +(\d+):(\d+):(\d+)$/, "$1年$2月$3日 $4时$5分$6秒");//    console.log(str);
String.prototype.myFormatTime = function myFormatTime() {
    var reg = /^(\d{4})(?:-|\/|\.|:)(\d{1,2})(?:-|\/|\.|:)(\d{1,2})(?:\s+)(\d{1,2})(?:-|\/|\.|:)(\d{1,2})(?:-|\/|\.|:)(\d{1,2})$/g, ary = [];
    this.replace(reg, function () {
        ary = Array.prototype.slice.call(arguments, 1, 7);
    });
    var format = arguments[0] || "{0}年{1}月{2}日 {3}:{4}:{5}";
    return format.replace(/{(\d+)}/g, function () {
        var val = ary[arguments[1]];
        return val.length === 1 ? "0" + val : val;
    });
};
str = "2015-5-3 12:9:13";
console.log(str.myFormatTime());
console.log(str.myFormatTime("{0}年{1}月{2}日"));
console.log(str.myFormatTime("{1}-{2} {3}:{4}"));
数字转大写//->"贰零壹伍"
str = "2015";
ary = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"];
str = str.replace(/\d+?/g, function () {
    return ary[arguments[0]];
});
console.log(str);
1、元字符  [拥有特殊含义的元字符]  \d -> 匹配一个0-9的数字,相当于[0-9],和它相反的是\D ->匹配一个除了0-9的任意字符  \w -> 匹配一个0-9、a-z、A-Z、_的数字或字符,相当于[0-9a-zA-Z_]  \s -> 匹配一个空白字符(空格、制表符...)  \b -> 匹配一个单词的边界  \t -> 匹配一个制表符  \n -> 匹配一个换行  . -> 匹配一个除了\n以外的任意字符  ^ -> 以某一个元字符开头  $ -> 以某一个元字符结尾  \ -> 转移字符  x|y -> x或者y的一个  [xyz] -> x、y、z中的任意一个  [^xyz] -> 除了xyz中的任意一个字符  [a-z] -> 匹配a-z中的任意一个字符  [^a-z] -> 匹配除了a-z中的任意一个字符  () -> 正则中的分组

  注意:  1)关于[]    a、[+] ->中括号中出现的所有字符都代表的是本身的意思    b、[12-65] ->这个不是12-65而是1/2-6/5三者中的一个

  2)关于()    a、分组的作用是改变默认的优先级,例如:/^18|19$/,181、189、119、819、1819...都符合,而不是我们认为的18或19,但是改成/^(18|19)$/就是单纯的18或19了    b、可以在捕获大正则匹配的内容同时,把分组匹配的内容也进行捕获->分组捕获    c、分组引用,例如:/^(\d)(\w)\2\1$/,这里的\2是和第二个分组出现一模样的内容,\1是和第一个分组出现一模一样的内容,例如:"0aa0"就符合了

  [代表数量的量词元字符]  * -> 0到多个  + -> 1到多个  ? -> 0到1个  {n} -> 出现n次  {n,} -> 出现n到多次  {n,m} -> 出现n到m次

  注意:  1)关于?的几种情况    a、放在非量词元字符后面,代表出现0-1次    b、放在量词元字符后面,代表取消捕获时候的贪婪性,例如:reg=/\d+/; reg.exec("2015") -> "2015" 但是如果正则这样写 reg=/\d+?/; reg.exec("2015") -> "2"    c、在分组开头加?:,代表当前的分组只是匹配不进行捕获,例如:/^(?:\d+)$/    d、在分组开头加?=,正向预查,例如:/^zhufeng(?=1|2)$/ 只有"zhufeng1"和"zhufeng2"才符合    e、在分组开头加?!,负向预查,例如:/^zhufeng(?!1|2)$/ 除了"zhufeng1"和"zhufeng2"不符合,其他的只要是"zhufeng(任何的东西)"都符合

  [代表本身意思的元字符]   除了以上的,在字面量方式中,我们出现的其他任意字符代表的都是自己本身的意思  var num=12;  var reg=/^\w"+num+"$/; ->这里"+num+"不是把变量的值拼接,而这里的不管是"还是+都是元字符  ->对于需要拼接字符串和变量的方式我们只能使用实例方式创建正则

2、修饰符  i -> ignoreCase 忽略字母的大小写  g -> global 全局匹配 (加上g可以解决正则捕获时候的懒惰性)  m -> multiline 多行匹配

3、项目中常用的正则  1)有效数字的  var reg=/^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;

  2)邮箱的  var reg = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;

  3)电话的  var reg = /^1\d{10}$/;

  4)年龄在18-65之间的  var reg = /^((18|19)|([2-5]\d)|(6[0-5]))$/;

  5)中文姓名  var reg = /^[\u4e00-\u9fa5]{2,4}$/;

  6)身份证  var reg = /^(\d{6})(\d{4})(\d{2})(\d{2})(?:\d{2})(\d)(?:\d|X)$/;  //-> 130828(省市县) 1990(年) 12(月) 04(日) 06 1(奇数是男偶数是女) 7(数字或者X)

4、正则的匹配  reg.test([string]) ->true就是匹配成功  false->匹配不成功

5、正则的捕获  1)reg.exec([string])    -> 首先去匹配,匹配成功在捕获,返回的是一个数组; 如果匹配不成功返回的是null;    -> 正则的捕获即懒惰又贪婪    -> 解决懒惰性 在正则的末尾增加全局修饰符g    -> 解决贪婪性 在量词后面加?
时间: 2024-10-11 05:37:00

正则应用的相关文章

python学习第十五节(正则)

正则的贪婪匹配 非贪婪模式按照最小重复数取 非贪婪匹配 正则的方法 re.split 正则分割 分割次数 保留分隔符,用一个括号套住分隔符 sub 替换字符串需要三个参数,要替换的内容(正则),新内容,字符串 分开写用compile可以写一次规则然后多次匹配,好处就是方便灵活. 返回一个迭代器对象 爬虫爬豆瓣电影信息,用正则 模块 configparser功能:创建成下面类型的文件 使用方法 读操作 DEFAULT是默认信息,不需要打印,默认信息是所有段落信息的共享信息. 用上图方法判断字段是否

python基础-正则2

正则函数 Python提供re模块,包含所有正则表达式的功能 由于python的字符串本身也有\转义,所以需要注意: s = "ABC\\-001" 对应的正则表达式应为:'ABC\-001' 用python的r前缀,就不用考虑转义问题 可以使用 s = r'ABC\-001' 对应的正则表达式为:'ABC\-001' match() 判断是否匹配成功,如果匹配成功,返回一个match对象,否则返回None test = "用户输入的字符串" if re.match

C#常用的正则工具类写法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Collections; namespace ConsoleApplication1 { /// <summary> /// 字符串正则匹配帮助类 /// </summary> public static cla

iOS 中的正则匹配(工具类)

正则表达式 正则表达式是对字符串操作的一种逻辑公式, 用事先定义好的一些特定字符.及这些特定字符的组合, 组成一个"规则字符串", 这个"规则字符串"用来表达对字符串的一种过滤逻辑, 正则表达式就是用于描述这些规则的工具, 或者说, 正则表达式就是记录文本规则的代码. 在开发中, 我们经常会有查找符合某些复杂规则的字符串的需要, 比如数据校验: 判断用户的输入是否合法(如:用户注册的时候,QQ号码,电话号码,邮箱是否符合要求) 下面让我们先来看看正则匹配常用的一些字

正则验证手机号(联通,电信,移动手机号),不包含座机号,作为会员登陆(正则验证) winform

public static class RegxCheck { /// <summary> /// 正则表达式验证是否为手机号 /// </summary> /// <param name="telNum">需要验证的手机号</param> /// <returns></returns> public static bool CheckTelNum(string telNum) { //电信手机号码正则 strin

看看你的正则行不行——正则优化一般的json字符串

json字符串很有用,有时候一些后台接口返回的信息是字符串格式的,可读性很差,这个时候要是有个可以格式化并高亮显示json串的方法那就好多了,下面看看一个正则表达式完成的json字符串的格式化与高亮显示 首先是对输入进行转换,如果是对象则转化为规范的json字符串,不是对象时,先将字符串转化为对象(防止不规范的字符串),然后再次转化为json串.其中json为输入. if (typeof json !== 'string') { json = JSON.stringify(json); } el

正则表达示

这里对正则表达示进行一定程度的总结.为避免太过纠结,这里避开一些 鸡肋 的正则用法. 更多文档参考官方文档 http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html 字符 x 字符 x \\ 反斜线字符 \t 制表符 ('\u0009') \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D') \f 换页符 ('\u000C') \a 报警 (bell) 符 ('\u0007') \e 转义

js jquery版本的 金额千分位转换函数(非正则,效率极高)

没想到js里面没有 金额千分位格式化的处理函数(例:1,234.01 这样的格式),网上搜了一圈,都是使用正则的方式处理的.正则的效率不敢恭维啊,又耗费资源速度又慢(虽然处理起来会直观一些). 因此专门写了一个纯数值处理最后输出字符串个 金额千分位处理函数,并封装成jQuery函数包,处理时效率很高,可高频率的使用,直接上代码.还有min压缩版本可点击连接下载. 如果你不是jQuery环境,直接把源码拿出来,重新封装到自己的函数中能够就能用. 源码以及min包下载地址:jQuery.format

【分享】利用Apache的Htaccess Files命令限制访问文件类型,Files正则

如果你在你的模板文件夹中有很多PSD HTML模板,那么用接下来这个htaccess文件可以保护限制访问: 文件D:\WebSite\ZBPHP.COM\www\Tpl\.htaccess 全部源码如下: <Files ~ "\.(html?|tpl|psd|zip|rar)$"> Order Allow,Deny Deny from all </Files> [分享]利用Apache的Htaccess Files命令限制访问文件类型,Files正则,布布扣,b

HashMap工作原理、深入理解JVM、正则

HashMap工作原理: http://www.importnew.com/7099.html: http://blog.csdn.net/ghsau/article/details/16843543: http://blog.csdn.net/ghsau/article/details/16890151. 深入理解JVM: http://www.importnew.com/17770.html: http://www.cnblogs.com/dingyingsi/p/3760447.html.