lex 命令中的扩展的正则表达式
在lex说明文件中指定扩展的正则表达式与在sed或者ed命令中所使用的方法相似。 扩展的正则表达式指定了要匹配的字符串的集合。表达式包含文本字符和运算符字符。文本字符与正在被比较的字符串中的相应字符匹配。运算符字符指定重复次数、选项和其他功能。 数字和字母表的字母被认为是文本字符。例如,扩展的正则表达式integer与字符串integer匹配,表达式a57D搜索字符串a57D。
注意:/约束条件/,//之间的是约束条件,^是开始字符,$是结束字符,不起作用的情况下可以前面加^,并以+$是结束字符 1、。句点符号表示任意一个字符; 2、[ ]方括号表示匹配可以匹配方括号中的任意点单个字符,方括号只允许匹配单个字符。 3、| “或”符号表示小括号的任意一组字符,它不能和方括号使用,只能和小括号使用。 4、表示匹配次数的符号,它们都是对前面的指定字符起作用 *:表示匹配0次或多次 ?:表示匹配0次或一次 +:表示至少匹配一次 {n}:表示匹配n次 {n,m}:表示从n次到m次 5、“否”符号“^”符号称为“否”符号。如果用在方括号内,“^”表示不想要匹配的字符。 6、边界匹配符 ^一行的开始 $一行的结尾 b一个单词的边界 B一个非单词的边界 G前一个匹配的结束 7、转义字符 转义符号“”转义后代表的含义如下: 常见实例: 1、非空匹配:/S+/ 2、表示字符串不含空格:^[s]*$ 3、如果想不包括空格及其它空白字符^[^s]*$ 4、要插入一个反斜杠,那就得用"\",尤其在java代码中。关于unicode的编码可以查看电脑菜单中的 附件——系统工具——字符映射表,注意要判断字符串中是中括号“[”和“]”,在java代码中采用这样的方法:(加两个)String constraint = "^[u005bu005d]+$"; 5、数字和字母的组合,不能只是数字或只是字母:/(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{2,})$/ 6、字符串是否为连续的中文字符(不包含英文及其他任何符号和数字):/^[u4e00-u9fa5]+$/ 7、输入必须是双字节字符:/^[^x00-xff]+$/ 8、不能输入中文/^[^u4e00-u9fa5]+$/(中文字符不止u4E00-u9FA5这个区,还有uF900-uFA2D这个区) 9、字符串仅包含英文,不包含其它的:/^[a-zA-Z]+$/ 10、字符串仅包含数字,不包含其它的:/^d+$/ 11、字符串仅包含数字、英文和下划线:/^w+$/ 12、字符串仅包含数字、英文和下划线且不能为空:/w+/ 13、字符串仅包含数字、英文和下划线和空格:/^[ws]+$/ 14、小数点后只能两位,如果小数点后便没有数字的话,不能出现小数点:/^[0-9]+$|^[0-9]+.[0-9]{1,2}$/ 15、可包含大小写英文字母,数字,字符_,字符-:^[A-Za-z0-9_-]+$ 16、字符串仅包含数字、英文且不能为空/^[0-9a-zA-Z_]*$/ 17、输入只包含中文、数字和字母:/^[a-zA-Zdu4E00-u9FA5]+$/ 18、字母和数字的组合,不能单独输入字母或数字:/(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{2,51); font-family:Arial; font-size:14.399999618530273px; line-height:26px"> 19、输入字母和数字的组合,6位到15位:/([a-zA-Z0-9]{6,15})?/ 20、电话号码的验证:/([0-9]{3,4}[-][0-9]{6,8}([-][0-9]{3,6})?)?/ 21、电子邮件的验证:/(w+@(w+.)+w{2,3})?/ 22、Ip地址的验证表达式:/((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)/ 23、必须为正数,且数字第一个不能为0:/^([1-9][0-9]*)$/ 24、日期判断正则表达式: YYYY-MM-DD基本上把闰年和2月等的情况都考虑进去了 下面的是加了时间验证的 25、只能输入数字:“^[0-9]*$” 26、只能输入n位的数字:“^d{n}$” 27、只能输入至少n位数字:“^d{n,}$” 28、只能输入m-n位的数字:“^d{m,n}$” 29、只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$” 30、只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$” 31、只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$” 32、只能输入非零的正整数:“^+?[1-9][0-9]*$” 33、只能输入非零的负整数:“^-[1-9][0-9]*$” 34、只能输入长度为3的字符:“^.{3}$” 35、只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$” 36、只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$” 37、只能输入由26个小写英文字母组成的字符串:“^[a-z]+$” 38、只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$” 39、只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$” 40、匹配特定数字: ^[1-9]d*$ //匹配正整数 ^-[1-9]d*$ //匹配负整数 ^-?[1-9]d*$ //匹配整数 Pattern p = Pattern.compile("^(-?[1-9]d*)|0|[1-9]d*+$"); ^[1-9]d*|0$ //匹配非负整数(正整数+ 0) ^-[1-9]d*|0$ //匹配非正整数(负整数+ 0) ^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数 ^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数 ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数 ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非负浮点数(正浮点数+ 0) ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮点数(负浮点数+ 0) 41、验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。 42、验证是否含有^%&',;=?$"等字符:“[^%&',;=?$x22]+” 43、只能输入汉字:“^[u4e00-u9fa5],{0,51); font-family:Arial; font-size:14.399999618530273px; line-height:26px"> 44、验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$ 45、验证Email地址:/.+@.+.[a-z]+/ 46、验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$” 47、验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$”正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,“XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。 48、匹配国内电话号码:d{3}-d{8}|d{4}-d{7}匹配形式如0511-4405222或021-87888822 49、验证身份证号(15位或18位数字):“^d{15}|d{}18$” 50、验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12” 51、验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”正确格式为:“01”“09”和“1”“31”。 52、匹配空行的正则表达式:/n[s| ]*r/可以用来删除空白行 53、匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/ 54、匹配首尾空格的正则表达式:/(^s*)|(s*$)/ 55、匹配腾讯QQ号:[1-9][0-9]{4,}腾讯QQ号从10000开始 56、匹配中国邮政编码:[1-9]d{5}(?!d)中国邮政编码为6位数字 57、匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 58、验证录入的数据只能介于114-116之间,包括小数:/^(114|115|116)(.d+)?$/ 运算符
下面的列表描述了如何使用运算符指定扩展的正则表达式:
要将运算符字符作为文本字符使用,请使用下述之一的转义序列:
"
"(双引号)或者
(反斜杠)。
" "运算符表示其中包含的即为文本。那么,下面的示例与字符串
xyz++匹配:
可以给字符串的一部分加引号。给普通的文本字符加引号不起作用。例如,下面的表达式与前面的示例相等: 要确保文本被解释为文本,请给不是字母或者数字的所有字符加引号。
将运算符字符转换为文本字符的另一种方法是在运算符字符前面加上
(反斜杠)字符。例如,下面的表达式等价于上述示例:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |