首先,sublime关于正则表达式的用法:
开启sublime正则匹配:ctrl+f 点击图标'.*',如果需要替换 ctrl+h
利用正则表达式匹配如下字符串,我需要匹配jpg,并且以http开头的url,并且取出http后面的内容:
http://img.host.com/folfdsders/sf.jpg
https://img.host.com/fofdslders/fdssf.jpng
http://imgs.host.com/folders/fdssf.jpg
https://img.host.com/ffdsolders/fdssf.jpg
https://imgs.host.com/folders/sfdsf.jpng
http://img.host.com/fofdslders/sffds.jpg
http://img.host.com/fofdslders/sffds.jpg
http://img.host.com/folders/sf.jpg
https://img.host.com/folders/sf.jpg
分析:
http:(\/\/.+\.jpg)
1,首先以http://开头的,但是 '//'需要转意为'\/\/'.
2,. 代表任意字符。
3,+ 代表至少有1一个字符
4,后面又是任意字符,但是重复使用了,这里使用'\'来转意为 \.
5,以.jpg结尾的图片
6,() 代表分组,我需要的是括号里面的内容
最后的替换结果为:
匹配日期类型:
将以下日期类型匹配的找出来
2016-02-06
2006-01-06
20w6-01-06
2026-d2-06
2008-02-16
2fd6-01-df
2000-11-16
2032315-02-23
答案:
^\d{4}[/-]\d{2}[/-]\d{2}$
1,d代表一个数字,d{4}代表4个数字
2,[]表示'或',[/-] 代表 中级的连接符 '/'或者是'-'
3,^ 代表开头
4,$ 代表结尾
如下图所示:
现在我想把找出来的内容替换成另外一种日期格式的 dd/MM/yyyy
答案:
^(\d{4})[/-](\d{2})[/-](\d{2})$
如下图所示:
Java里面有时也需要判断日期的格式(yyyy-MM-dd)
比如:
if (!value.matches
("^[1-2]{1}[0-9]{3}\\-[0-1]{1}[0-9]{1}\\-[0-3]{1}[0-9]{1}$"))
{
throw new RuntimeException("日期格式不正确");
}
可以根据日期的格式需要,任意的更改。
Javascript 中的正则表达式
1,字面量
这里b代表单词的边界,g代表global全局的
如下图所示:
2,可以使用构造函数的方式来new一个正则表达式:
3,修饰符(i 代表ignore,忽略大小写)
下面这个demo 但加上了i是'Do'也会被当做'do'来替换掉.
正则表达式的类型
1,字符类 [abc],如果字符过多可以写成[a-z],如果需要大小写字母完全匹配 [a-zA-Z]
如果我想匹配数子和中划线
2015-12-15'.replace(/[0-9-]/g,'W')
"WWWWWWWWWW"
2,字符类取反^
1
3,预定义字符
边界匹配字符
4,多行匹配
m
5,正则表达式中的量词
6,贪婪模式-尽可能多的匹配
非贪婪模式-尽可能少的匹配
7,分组
主要用来圈定指定内容进行分组处理,比如:
我需要取出小写字母加上数字连续出现3次的字符(需要用小括号将指定分组的字符括起来)
8.利用分组反向引用 我希望把日期 2016-02-05 转换成 02/05/2016
9,前瞻
正则表达式从文本的头部向尾部开始解析,文本尾部方向,称为'前',前瞻是在正则表达式匹配规则的时候,向前检查是否符合断言,后顾/后瞻方向相反(javascript不支持后顾)
a3*4 匹配有带数字的单词字符。w = [a-zA-Z0-9]
如上图所示,只有单词字符参与匹配替换,后面的数子只做匹配规则使用,不参与匹配替换。
正则表达式的对象属性
具体例子
RegExp.prototype.test(str)
用于测试字符串参数中是否存在匹配正则表达式模式的字符串,如果存在返回true,否则返回false
由于正则表达式有一个lastIndex,所以出现执行test方法 有时时true 有时是false
Stringl.protatype.search(reg)
search() 方法用于检索字符串中指定的字符串,或检索与正则表达式相匹配的字符串
方法返回第一个匹配的结果 index,查找不到返回 -1
search()方法不执行全局匹配,它忽略标志g,并且总是从字符串的开始进行搜索。
String.prototype.match(reg)
如果 regexp没有标志g,那么match()方法就只能在字符串中执行一次匹配。
如果没有找到任何匹配的文本,将返回null
否则它将返回一个数组,其中存放了与它找到匹配文本有关的信息
'2a3f3s3g4'.match(/\d(\w)\d/g)
["2a3", "3s3"]
String.prototype.split(reg)
我们经常使用split方法把字符串分割为字符串数组,如下图所示:
String.prototype.replace
'e9f9s9e9g9'.replace(/d/g,'X')
"eXfXsXeXgX"
'e9f4s9e5g8'.replace(/d/g,'X')
"eXfXsXeXgX"
我想把字符串中的每一个数字找出来加一
'R9E8R8E0W1'.replace(/d/g,function(match,index){console.log(index); return parseInt(match)+1})
1
3
5
7
9
"R10E9R9E1W2"
具体运用:
<html>
<body>
<script type="text/javascript">
var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
var url = 'http://www.ora.com:80/goodparts?q#fragment';
var result = parse_url.exec(url)
var names = ['url','scheme','slash','host','port','path','query','hash'];
var i
for(i = 0;i<names.length;i++){
document.write(names[i]+':'+result[i]);
document.write('<br>')
// ^ 字符表示这个字符串的开始,,它是一个标记,用来防止exec跳过不像URL的前缀
// (?:([A-Za-z]+):)? 这个因子匹配一个协议名,但仅当它之后跟随一个:(冒号)的时候才匹配。(?:....)表示一个非捕获型的分组,前缀?表示这个分组是可选的。
}
</script>
</body>
</html>
读书笔记
参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。找到全局所有的制定字符。
<!DOCTYPE html>
<html>
<head>
<title>html</title>
</head>
<body>
<script type="text/javascript">
var str = 'return something in your work,return'
var patter = /return/g;//对return进行全局且不敏感搜索。
document.write(str.match(patter))
</script>
</body>
</html>
[abc] 表达式用于查找方括号之间的任何字符。方括号内的字符可以是任何字符或字符范围。
查找不在方括号之间的任何字符。
<!DOCTYPE html>
<html>
<head>
<title>html</title>
<!-- [abc] 表达式用于查找方括号之间的任何字符。方括号内的字符可以是任何字符或字符范围。-->
</head>
<body>
<script type="text/javascript">
var str = 'is this your first time in china'
var patter = /[a-g]/g;
document.write(str.match(patter))
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>html</title>
<!-- [abc] 表达式用于查找不在方括号之间的任何字符。-->
</head>
<body>
<script type="text/javascript">
var str = 'is this your first time in china'
var patter = /[^a-g]/g;
document.write(str.match(patter))
</script>
</body>
</html>
[^a-g]
查找不在区间的任意字母,'^' 表示取反。
<!DOCTYPE html>
<html>
<head>
<title>html</title>
<!-- [abc] 表达式用于查找不在方括号之间的任何字符。-->
</head>
<body>
<script type="text/javascript">
var str = 'is this your first time in china'
var patter = /[^a-g]/g;
document.write(str.match(patter))
</script>
</body>
</html>
[0-9]
查找任何0-9之间的数字
<!DOCTYPE html>
<html>
<head>
<title>html</title>
</head>
<body>
<script type="text/javascript">
var str = 'is this your 45 first time in china5489943'
var patter = /[0-9]/g;
document.write(str.match(patter))
</script>
</body>
</html>
[A-z]
查找任何大写A到小写z之间的字母
<!DOCTYPE html>
<html>
<head>
<title>html</title>
</head>
<body>
<script type="text/javascript">
var str = 'is this your 45mke FDJSGfirstgreenAE GREtredime GFREGin jim michaelcfjrekgsjhina5489943fregtrytujy'
var patter = /[A-z]/g;
document.write(str.match(patter))
</script>
</body>
</html>
或(red|blue|green|mke|michael|jim)
查找任意指定的字符
<!DOCTYPE html>
<html>
<head>
<title>html</title>
</head>
<body>
<script type="text/javascript">
var str = 'is this your 45mke FDJSGfirstgreenAE GREtredime GFREGin jim michaelcfjrekgsjhina5489943fregtrytujy'
var patter = /(red|blue|green|mke|michael|jim)/g;
document.write(str.match(patter))
</script>
</body>
</html>
元宇符.
用于查找单个字符,除了换行和行结束符。
<!DOCTYPE html>
<html>
<head>
<title>html</title>
</head>
<body>
<script type="text/javascript">
var str = 'is this your 45mke FDJSGfirstgreenAE GREtredibmimeiom iwm GFREGin jim michaelcfjriqmekgsjhina5489943fregtrytuiumjy'
var patter = /i.m/g; //ibm,iom,iwm,iqm,ium
document.write(str.match(patter))
</script>
</body>
</html>
exec() 方法用于检索字符串中的正则表达式的匹配。
<!DOCTYPE html>
<html>
<head>
<title>html</title>
</head>
<body>
<script type="text/javascript">
var str = 'is &this your 4&5e FDJSGfi&rstgremkenAE? GREtredibm&ime&iom moreiwm GFREGin jim michae&lcpowerfjriqmekgsm&jhina548|9943fregtrym&mktuiumjy'
var patt = new RegExp('mk','g');
var result;
while((result=patt.exec(str))!=null){
document.write(result)//mkmkmk
document.write('<br>')
document.write(patt.lastIndex)
document.write('<br>')
}
</script>
</body>
</html>
我想替换一个sql文件中所有这样的字符:
COMMENT '个人计提报表ID',
需求: 把COMMENT 后面的除了 "," 号和回车之外所有的字符替换为空白
COMMENT .*[^\,\n]
延伸阅读:
http://www.w3school.com.cn/js...
- abc ↩
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。