- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章正则表达式详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本.
正则表达式可以干嘛?
1、数据有效性验证,可以对一个字符串进行测试,看该字符串是否符合某种规定.
2、替换文本,可以在文档中将指定的文字删除,或替换为其他文字.
3、根据字符串提取一个子字符串,用来在文本或输入字段中查找特定文字.
正则表达式语法 。
一个正则表达式是由普通字符(a-z)和特殊字符(元字符)组成的文字模式,该模式作为一个模版,将某个字符模式与所搜索的字符串进行匹配.
元字符 。
具有特殊意义的专用字符.
基本元字符 。
. 匹配除换行以外的任意字符,例如正则表达式 r.t 能够匹配 “rat、rut、r t”,但是不能匹配root 。
[] 匹配匹配一个出现在[]中的字符 。
| 或 敏感词 ab|cd|ed|df 。
() 提高优先级 a(bc) 实现分组 。
限定元字符 。
* 重复零次或多次 。
+ 重复一次或多次 。
? 重复零次或一次 。
{n} 重复n次 。
{n,} 重复n次或多次 。
{n,m} 重复n到m次 。
首尾元字符 。
^ 匹配字符串开始 例如正则表达式 ^when 能够匹配到 ”when in the“ 的开始,但不能匹配到 ”what and when in the“ 。
$ 匹配字符串结束 例如正则表达式 food$ 能够匹配到 “he's food” 的末尾 。
简写形式 。
\b 单词的开始或结束 。
\d 匹配0-9的数字 \D非数字 。
\s 任意的空白符 包括tab和换行符 \S大写 非 空白之外的所有字符 。
\w 匹配字母、数字或下划线 \W 非字母、数字下划线 。
转义字符 。
如果想查找元字符本身的话,比如想查找.或者*就会出现问题,因为会解释成其他意思。这时就需要使用\来取消这些字符的特殊意义.
因此需要使用\. \* 查找\本身应该写\\ 。
在javascript中使用正则表达式 。
创建正则表达式 。
1
2
3
4
|
//字面值
var reg = /\d+/;
//构造函数
var regx = new RegExp(<
a
href
=
"file://\\d+"
>\\d+</
a
>);
|
匹配 。
1
2
3
4
5
6
7
8
9
|
if(reg.test("45646515"))
{
alert("OK");
}
if(regx.test("sd"))
{
alert("ok")
}
|
提取 。
1
2
3
4
5
6
7
8
|
var str="853020304@qq.com";
var reg = /([a-zA-Z0-9]+)@([a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+)/;
var match = reg.exec(str);
alert(match[0]); //853020304@qq.com 匹配到的对象
alert(match[1]); //853020304 [1][2]分别是各个组
alert(match[2]); //qq.com
alert(match[3]); //.com
|
循环提取 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
var str = "12345";
var r = /\d\d/g; //g global 全局匹配
var m = r.exec(str); //12
alert(m);
m = r.exec(str); //34
alert(m);
m = r.exec(str); //null 没有了返回null
alert(m);
var arr = [];
var m = null;
while((m=r.exec(str)) != null) //如果不等于null 继续循环
{
arr.push(m); //添加到数组
}
alert(arr.length); //[0]=12 [1]=34
|
替换 。
1
2
3
4
5
6
7
8
9
|
string str = <
string
>.replace(正则表达式或字符串,替换为某字符串);
var str = "ab--c--d--e--f-g";
var result = str.replace(/-+/g,','); //如果不写g 则只替换第一个
alert(result); //ab,c,d,e,f,g
var date = "2015年8月24日";
var result = date.replace(/(\d+)年(\d+)月(\d+)日/,"$1-$2-$3");
alert(result);//2015-8-24
|
在c#中使用正则表达式 。
1
2
3
4
5
|
var regx =
"^[a-zA-Z0-9]{6,20}$"
;
if
( ! Regex.IsMatch(
"abcdef;sd123"
,regex)
{
//长度必须6-20,字母和数字
}
|
常用表达式 。
匹配身份证:\d{15}|\d{18} 。
匹配中国邮政编码:[1-9]\d{5}(?!\d) 。
匹配腾讯QQ号:[1-9][0-9]{4,} 。
匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7} 。
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 。
匹配网址URL的正则表达式:[a-zA-z]+://[^\s]* 。
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 。
匹配首尾空白字符的正则表达式:^\s*|\s*$ 。
匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> 。
匹配中文字符的正则表达式: [\u4e00-\u9fa5] 。
限制网页表单里的文本框输入内容 。
只能输入中文:
1
|
<input type=
"text"
onkeyup=
"value=value.replace(/[^\u4E00-\u9FA5]/g,'')"
onbeforepaste=
"clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
/>
|
。
只能输入数字:
1
|
<input type=
"text"
onkeyup=
"value=value.replace(/[^\d]/g,'') "
onbeforepaste=
"clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
/>
|
。
只能输入数字和英文:
1
|
<input type=
"text"
onkeyup=
"value=value.replace(/[\W]/g,'') "
onbeforepaste=
"clipboardData.setData('text',clipboardData.getData('text).replace(/[^\d]/g,''))"
/>
|
以上内容就是本文对正则表达式做的详解,希望大家喜欢 。
最后此篇关于正则表达式详解的文章就讲到这里了,如果你想了解更多关于正则表达式详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在用 yacc/bison 编写一个简单的计算器。 表达式的语法看起来有点像这样: expr : NUM | expr '+' expr { $$ = $1 + $3; } | expr '-'
我开始学习 lambda 表达式,并在以下情况下遇到了以下语句: interface MyNumber { double getValue(); } MyNumber number; nu
这两个 Linq 查询有什么区别: var result = ResultLists().Where( c=> c.code == "abc").FirstOrDefault(); // vs. va
如果我们查看 draft C++ standard 5.1.2 Lambda 表达式 段 2 说(强调我的 future ): The evaluation of a lambda-expressio
我使用的是 Mule 4.2.2 运行时、studio 7.5.1 和 Oracle JDK 1.8.0_251。 我在 java 代码中使用 Lambda 表达式,该表达式由 java Invoke
我是 XPath 的新手。我有网页的html源 http://london.craigslist.co.uk/com/1233708939.html 现在我想从上面的页面中提取以下数据 完整日期 电子
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我将如何编写一个 Cron 表达式以在每天上午 8 点和下午 3:30 触发?我了解如何创建每天触发一次的表达式,而不是在多个设定时间触发。提前致谢 最佳答案 你应该只使用两行。 0 8 * * *
这个问题已经有答案了: What do 3 dots next to a parameter type mean in Java? (9 个回答) varargs and the '...' argu
我是 python 新手,在阅读 BeautifulSoup 教程时,我不明白这个表达式“[x for x in titles if x.findChildren()][:-1]”我不明白?你能解释一
(?:) 这是一个有效的 ruby 正则表达式,谁能告诉我它是什么意思? 谢谢 最佳答案 正如其他人所说,它被用作正则表达式的非捕获语法,但是,它也是正则表达式之外的有效 ruby 语法。 在
这个问题在这里已经有了答案: Why does ++[[]][+[]]+[+[]] return the string "10"? (10 个答案) 关闭 8 年前。 谁能帮我处理这个 JavaSc
这个问题在这里已经有了答案: What is the "-->" operator in C++? (29 个答案) Java: Prefix/postfix of increment/decrem
这个问题在这里已经有了答案: List comprehension vs. lambda + filter (16 个答案) 关闭 10 个月前。 我不确定我是否需要 lambda 或其他东西。但是,
C 中的 assert() 函数工作原理对我来说就像一片黑暗的森林。根据这里的答案https://stackoverflow.com/a/1571360 ,您可以使用以下构造将自定义消息输出到您的断言
在this页,John Barnes 写道: If the conditional expression is the argument of a type conversion then effec
我必须创建一个调度程序,它必须每周从第一天上午 9 点到第二天晚上 11 点 59 分运行 2 天(星期四和星期五)。为此,我需要提供一个 cron 表达式。 0-0 0-0 9-23 ? * THU
我正在尝试编写一个 Linq 表达式来检查派生类中的属性,但该列表由来自基类的成员组成。下面的示例代码。以“var list”开头的 Process 方法的第二行无法编译,但我不确定应该使用什么语法来
此 sed 表达式将输入字符串转换为两行输出字符串。两条输出行中的每一行都由输入的子串组成。第一行需要转换成大写: s:random_stuff\(choice1\|choice2\){\([^}]*
我正在使用 Quartz.Net 在我的应用程序中安排我的工作。我只是想知道是否可以为以下场景构建 CRON 表达式: Every second between 2:15AM and 5:20AM 最
我是一名优秀的程序员,十分优秀!