IDCS3正则表达式应用实例对照表已验证.docx
- 文档编号:30365239
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:17
- 大小:23.57KB
IDCS3正则表达式应用实例对照表已验证.docx
《IDCS3正则表达式应用实例对照表已验证.docx》由会员分享,可在线阅读,更多相关《IDCS3正则表达式应用实例对照表已验证.docx(17页珍藏版)》请在冰豆网上搜索。
IDCS3正则表达式应用实例对照表已验证
Indesign-cs3中正则表达式应用实例(已验证,冒号前为表达式,复制后粘贴即可,冒号后为匹配项)
\[*.[[:
digit:
]]{1,3}]:
匹配[数字](上角标)
\[\d+\]:
匹配[数字](上角标)
^~K+.*$:
查找正文(原文正文、译文正文)
(?
<=·原文·)[\S\s]+(?
=\|译文\|):
匹配原文与译文间文字
\[*.[[:
digit:
]]{1,3}](~K+.*):
匹配[数字]+1段文字
\(\d+\)(~K+.*$):
匹配(数字)+1段文字
\(([[:
digit:
]]{1,3})\):
匹配(数字)
\(([[:
digit:
]]{1,3})\)(~K+.*)匹配(数字)+1段文字
【注释】:
【~K+】
【:
\r【
】:
】\r
^.{3}$:
匹配长度为3的字符(〔记〕)
\[1|\[2|\[*.[[:
digit:
]]]:
匹配[]里的数字
\|$\r[~b~b+]:
匹配|+1行无文字空行
·$\r[~b~b+]:
匹配·+1行无文字空行
^(.(?
!
))+$:
匹配一段文字
【】【】【】
^\s+(?
=\w{2,}):
匹配段首空格(包括不带文字空行)
\s+$:
匹配段尾空格
\s+(?
=\w{2,}):
匹配所有空格(中文、英文)
~b~b+:
段尾+1行不含文字空行
(\s*.*\w*\d*):
匹配上1行段尾+下1段文字
(?
m)^\w+:
匹配段首一个单词、一句话、一组数字(不含标点,不包括段首带空格字符)
[\r][\u]:
1行不含文字空行+1行英文(段首不含空格、不含标点)
[\r\n]+:
匹配段尾
^\s*~K:
空行+1行中文(段首含空格,不含标点)
[[:
punct:
]]:
匹配所有标点(包含中文、英文标点)
[^~K^[:
punct:
]^\d]:
匹配所有英文(不含中文、标点、数字)
[^^[:
punct:
]^\d]:
匹配所有英文(不含中文、标点、数字)
\\:
\后面带一个空格
\\~K:
\后面带一个汉字
[a-z,A-Z]:
匹配所有英文字母(包含大小写)
[[:
lower:
]]:
匹配所有小写英文字母
[[:
upper:
]]:
匹配所有大写英文字母
\l:
匹配小写字母
\u:
匹配大写字母
[\l\u]:
匹配大、小写字母
(?
<=((|\())(.+?
)(?
=()|\))):
匹配()内包含的所有文字
(")(\w+)("):
匹配“”里的文字(替换:
$2可将引号删除)
[~K]:
匹配中文汉字(匹配一个汉字)
~K+:
匹配汉字(一个、多个汉字)
[^\x00-\xff]+:
匹配所有中文+全角标点符号
(?
<=.)\.:
匹配.
(^[^\[\]]+?
):
匹配段首第一空格+段尾
[[:
digit:
]]:
匹配所有数字
^[0-9]:
匹配所有数字
\d:
匹配数字字符
\D:
匹配非数字字符
\d+:
匹配数字字符(单个、连续的数字)
[\d]、[$0-9]:
匹配数字字符
\d+\.?
\d*:
匹配数字(包含小数和小数点)
[[:
alpha:
]]:
匹配文字字符(包含中文、英文,不含数字、标点)
[[:
alnum:
]]:
匹配英文字母、数字
\w:
匹配文字字符(包含中文、英文,不含数字、标点)
\W:
匹配所有非汉字、字母、数字、下划线的字符
[:
任意英文字母:
]:
冒号里字符可以改成任意字母
^:
匹配行首(包含有空格行首、无文字空行)
^.:
匹配每段第一个字符(中、英文、括号、破折号)
$:
匹配行尾(包含有空格行尾、无文字空行)
^$:
匹配无文字空行
((?
<=\r)[\r]+|(\r*\Z)):
匹配无文字空行
\r:
匹配回车
\w*:
匹配一个英文单词或一句中文(包含空行、——)
\s:
匹配任意空白字符
\S:
匹配所有非空白字符
(((?
<=)^[]+)|((|+)+(?
<=)($|$\r|\r)))匹配所有半角空格(手工空格,不含英文单词间空格)
\S+:
匹配不包含空白符的字符串(一个英文单词、一段中文)
^\s+:
段首空格(包括无字空行)
^\S+:
一段话(中文)
\s*\r:
匹配行尾+无字空行
^\s*\r:
匹配无文字空行
([\s\S]*):
匹配表格中每一个单元格
([\d\D]*):
匹配表格中每一个单元格
([\w\W]*):
匹配表格中每一个单元格
(^a-zA-Z|\x{ff0c}):
匹配英文里全角逗号
\b(~K)(~K)\b:
匹配连续的两个汉字(替换:
两字中间加一个全角空格,$1~m$2)
~K$:
匹配段尾最后一个字(段尾不带标点)
[~K]+:
匹配中文汉字
[^~K]+:
匹配非中文(英文、标点)
(.....[[:
punct:
]]+\r)|(~K~K\r):
匹配段尾5个汉字+1个标点(.代表数量)
...\r:
匹配3个字符+段尾
..[[:
punct:
]]*$:
匹配段尾字符+段尾
[①-⑩]~K:
匹配①-⑩加一个汉字([]中代码可换)
以下未验证:
匹配:
(\()([^\)]*([~K|「|『|+|=|-]+)[^\)]*)(\))
替换
($2)
这里解释一下。
最开始我是这样写的(\()([^\)]*[~K]+[^\)]*)(\))
因为看到上面所说的情况,所以列举了「,『,+,=,-这几种情况。
如果有其他比如~@等情况还可以再加进去。
但是嵌套括号解决不了,本来想用平衡组/递归匹配的方法,怎奈所学有限。
匹配嵌套最多12层括号的正则表达式
reg_12=/\(([^()]|\(([^()]|\(([^()]|\(([^()]|\(([^()]|\(([^()]|\(([^()]|\(([^()]|\(([^()]|\(([^()]|\(([^()]|\(([^()])*\))*\))*\))*\))*\))*\))*\))*\))*\))*\))*\))*\)/g;
根据这个原理可以实现很多复杂的判断,一般来说,嵌套12层括号几乎够用了,不够根据规律自己再加,因为这里面没有最小匹配判断,因此速度是很快的。
\Z:
文章末尾
^.+$:
整段文字(含中、英文)
(|+)(?
<=)($):
消除行末空格
(((?
<=)^[]+)|((|+)+(?
<=)($))):
半角空格(段首、段尾空格,不含英文单词间空格)
(\d\d\d):
可以匹配这一组数字中的相连的三位数123,456,789,012元
((?
<=\r)[\r]+|(\r*\Z)):
表示无文字的空行
\b[\l\u]:
每个英文单词的头一个字母(含大写,包含人名:
D.K.)
\b(?
')\l或\<(?
')\l:
每个英文单词的头一个小写字母
\S\s:
一个字符+一个空格(中、英文)
[^\\\0-9^]:
除了数字以外所有字符(含标点、空格)
[^\"\']:
除了单、双引号以外所有字符(含标点、空格)
^[1-9]\d{5}:
表示邮政编码
[^]:
匹配一个不在指定范围内的字符,如:
[^a-z]表示除小写字母以外任意的字符
[^a-z]:
表示非小写字母的其他任意字符
^\s+:
表示段首1个以上空格(含无字空行)
\s+:
表示一个以上空格(含无字空行)
(\w)\1{2,}:
表示连续相同({}里的数字可以任意更改,如:
aaaa,数字就改成3)的字符
(^[^\r]+\r):
整体一段(中、英文,不含无文字空行)
^(\(\d{3,4}\)|\d{3,4})?
\d{7,8}$:
匹配电话号码(11位手机号、座机:
0431-********、88888888、8888888)
^(\(\d{3,4}\)|\d{3,4}-)?
\d{7,8}$:
匹配座机电话号码(座机:
0431********、88888888、8888888)
\d{18}|\d{15}$:
匹配身份证号(15位和18位)
((2[0-4]\d|25[0-5]|[01]?
\d\d?
)\.){3}(2[0-4]\d|25[0-5]|[01]?
\d\d?
):
匹配IP地址(192.168.6.89/192.168.6.0/202.098.000.068/255.255.255.000)
((2([0-4]\d|5[0-5])|1\d{2}|\d{2}|\d)\.){3}(2([0-4]\d|5[0-5])|1\d{2}|\d{2}|\d):
匹配IP地址
(192.168.6.89/192.168.6.0/202.098.0.068/255.255.255.0)
^.{2,}$:
匹配非空白行(至少两个字符以上)
^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13579])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$:
匹配年、月、日:
YYYY-MM-DD
(\b[a-zA-Z]+\b)(.*?
):
匹配英文单词+一个空格
(^\s+|\s+$):
匹配空格(不含英文单词间的空格)
[[:
space:
]]:
匹配所有空格
[\l\u](?
=([\l\u]):
查找带括号英文单词前的字母(ok(ok))
(")(\w+)("):
匹配引号里的字符(中、英文)
(\s*.*\w*\d*):
匹配一段中、英文文字(包含这段文字上一段结尾、非文字空行)
(?
m)^\w:
匹配段落开头第一不含空格字符(包括中、英文、数字)
(?
m)^\w+:
匹配段落开头第一个不含空格字符(一个英文单词、一句中文、一串数字,不含带括号的一句
(?
-m)^\w:
匹配文章的开头
(?
<=[\l\u]),:
匹配英文中的全角逗号
平年:
年份可统一写作:
(?
!
0000)[0-9]{4}
包括平年在内的所有年份的月份都包含1-28日:
(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])
包括平年在内的所有年份除2月外都包含29和30日:
(0[13-9]|1[0-2])-(29|30)
包括平年在内的所有年份1、3、5、7、8、10、12月都包含31日:
(0[13578]|1[02])-31)
合起来就是除闰年的2月29日外的其它所有日期:
(?
!
0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)
润年
能被4整除但不能被100整除的年份:
([0-9]{2}(0[48]|[2468][048]|[13579][26])
能被400整除的年份。
能被400整除的数肯定能被100整除,因此后两位肯定是00:
(0[48]|[2468][048]|[13579][26])00
合起来就是所有闰年的2月29日:
([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)
四条规则都已实现,且互相间没有影响,合起来就是所有符合DateTime范围的日期的正则
^((?
!
0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$
考虑到这个正则表达式仅仅是用作验证,所以捕获组没有意义,只会占用资源,影响匹配效率,所以可以使用非捕获组来进行优化。
^(?
:
(?
!
0000)[0-9]{4}-(?
:
(?
:
0[1-9]|1[0-2])-(?
:
0[1-9]|1[0-9]|2[0-8])|(?
:
0[13-9]|1[0-2])-(?
:
29|30)|(?
:
0[13578]|1[02])-31)|(?
:
[0-9]{2}(?
:
0[48]|[2468][048]|[13579][26])|(?
:
0[48]|[2468][048]|[13579][26])00)-02-29)$
正则表达式--验证手机号码:
13[0-9]{9}
实现手机号前带86或是+86的情况:
^((\+86)|(86))?
(13)\d{9}$
电话号码与手机号码同时验证:
(^(\d{3,4}-)?
\d{7,8})$|(13[0-9]{9})
提取信息中的网络链接:
(h|H)(r|R)(e|E)(f|F)*=*('|")?
(\w|\\|\/|\.)+('|"|*|>)?
提取信息中的邮件地址:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
提取信息中的图片链接:
(s|S)(r|R)(c|C)*=*('|")?
(\w|\\|\/|\.)+('|"|*|>)?
提取信息中的IP地址:
(\d+)\.(\d+)\.(\d+)\.(\d+)
提取信息中的中国手机号码:
(86)*0*13\d{9}
提取信息中的中国固定电话号码:
(\(\d{3,4}\)|\d{3,4}-|\s)?
\d{8}
提取信息中的中国电话号码(包括移动和固定电话):
(\(\d{3,4}\)|\d{3,4}-|\s)?
\d{7,14}
提取信息中的中国邮政编码:
[1-9]{1}(\d+){5}
提取信息中的中国身份证号码:
\d{18}|\d{15}
提取信息中的整数:
\d+
提取信息中的浮点数(即小数):
(-?
\d*)\.?
\d+
提取信息中的任何数字:
(-?
\d*)(\.\d+)?
提取信息中的中文字符串:
[\u4e00-\u9fa5]*
提取信息中的双字节字符串(汉字):
[^\x00-\xff]
使用extJs时能常用的正则表达式
"^\d+$" //非负整数(正整数+0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //非正整数(负整数+0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?
\d+$" //整数
"^\d+(\.\d+)?
$" //非负浮点数(正浮点数+0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数
"^((-\d+(\.\d+)?
)|(0+(\.0+)?
))$" //非正浮点数(负浮点数+0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?
\d+)(\.\d+)?
$" //浮点数
"^[A-Za-z]+$" //由26个英文字母组成的字符串
"^[A-Z]+$" //由26个英文字母的大写组成的字符串
"^[a-z]+$" //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串
"^\w+$" //由数字、26个英文字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址
"^[a-zA-z]+:
//(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?
\S*)?
$" //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$///年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$///月/日/年
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?
)$"//Emil
"(d+-)?
(d{4}-?
d{7}|d{3}-?
d{8}|^d{7,8})(-d+)?
"//电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"//IP地址
匹配中文字符的正则表达式:
[\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):
[^\x00-\xff]
匹配空行的正则表达式:
\n[\s|]*\r
匹配HTML标记的正则表达式:
/<(.*)>.*<\/\1>|<(.*)\/>/
匹配首尾空格的正则表达式:
(^\s*)|(\s*$)
匹配Email地址的正则表达式:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:
^[a-zA-z]+:
//(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?
\\S*)?
$
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:
(\d{3}-|\d{4}-)?
(\d{8}|\d{7})?
匹配腾讯QQ号:
^[1-9]*[1-9][0-9]*$
下表是元字符及其在正则表达式上下文中的行为的一个完整列表:
\将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。
^匹配输入字符串的开始位置。
如果设置了RegExp对象的Multiline属性,^也匹配'\n'或'\r'之后的位置。
$匹配输入字符串的结束位置。
如果设置了RegExp对象的Multiline属性,$也匹配'\n'或'\r'之前的位置。
*匹配前面的子表达式零次或多次。
+匹配前面的子表达式一次或多次。
+等价于{1,}。
?
匹配前面的子表达式零次或一次。
?
等价于{0,1}。
{n}n是一个非负整数,匹配确定的n次。
{n,}n是一个非负整数,至少匹配n次。
{n,m}m和n均为非负整数,其中n<=m。
最少匹配n次且最多匹配m次。
在逗号和两个数之间不能有空格。
?
当该字符紧跟在任何一个其他限制符(*,+,?
{n},{n,},{n,m})后面时,匹配模式是非贪婪的。
非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。
.匹配除"\n"之外的任何单个字符。
要匹配包括'\n'在内的任何字符,请使用象'[.\n]'的模式。
(pattern)匹配pattern并获取这一匹配。
(?
:
pattern)匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。
(?
=pattern)正向预查,在任何匹配pattern的字符串开始处匹配查找字符串。
这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。
(?
!
pattern)负向预查,与(?
=pattern)作用相反
x|y匹配x或y。
[xyz]字符集合。
[^xyz]负值字符集合。
[a-z]字符范围,匹配指定范围内的任意字符。
[^a-z]负值字符范围,匹配任何不在指定范围内的任意字符。
\b匹配一个单词边界,也就是指单词和空格间的位置。
\B匹配非单词边界。
\cx匹配由x指明的控制字符。
\d匹配一个数字字符。
等价于[0-9]。
\D匹配一个非数字字符。
等价于[^0-9]。
\f匹配一个换页符。
等价于\x0c和\cL。
\n匹配一个换行符。
等价于\x0a和\cJ。
\r匹配一个回车符。
等价于\x0d和\cM。
\s匹配任何空白字符,包括空格、制表符、换页符等等。
等价于[\f\n\r\t\v]。
\S匹配任何非空白字符。
等价于[^\f\n\r\t\v]。
\t匹配一个制表符。
等价于\x09和\cI。
\v匹配一个垂直制表符。
等价于\x0b和\cK。
\w匹配包括下划线的任何单词字符。
等价于'[A-Za-z0-9_]'。
\W匹配任何非单词字符。
等价于'[^A-Za-z0-9_]'。
\xn匹配n,其中n为十六进制转义值。
十六进制转义值必须为确定的两个数字长。
\num匹配num,其中num是一个正整数。
对所获取的匹配的引用。
\n标识一个八进制转义值或一个后向引用。
如果\n之前至少n个获取的子表达式,则n为后向引用。
否则,如果n为八进制数字(0-7),则n为一个八进制转义值。
\nm标识一个八进制转义值或一个后向引用。
如果\nm之前至少有isprecededbyatleastnm个获取得子表达式,则nm为后向引用。
如果\nm之前至少有n个获取,则n为一个后跟文字m的后向引用。
如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm。
\nml如果n为八进制数字(0-3),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。
\un匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。
匹配中文字符的正则表达式:
[u4e00-u9fa5]
匹配双字节字符(包括汉字在内):
[^x00-xff]
应用:
计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){returnthis.replace([^x00-xff]/g,"aa").length;}
匹配空行的正则表达式:
n[s|]*r
匹配HTML标记的正则表达式:
/<(.*)>.*1>|<(.*)/>/
匹配首尾空格的正则表达式:
(^s*)|(s*$)
应用:
javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:
String.prototype.trim=function()
{
returnthis.replace(/(^s*)|(s*$)/g,"");
}
利用正则表达式分解和转换IP地址:
下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:
functionIP2V(ip)
{
re=/(d+).(d+).(d+).(d+)/g//匹配IP地址的正则表达式
if(re.test(ip))
{
returnRegExp.$1*Math.pow(255,3))+RegExp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IDCS3 正则 表达式 应用 实例 对照 验证