javajava 正则 长度提取大于某个长度的纯数字

不懂数据库和Web安全的架构师不是一个好的程序员。关于正则表达式
大于等于100
或者小于100的正则表达式 - ITeye问答
问题:& 用正则表达式表示大于等于100&& 或者小于100的所有数字,包括小数
我写的有点问题/^[0-9]{3}[0-9\.]{0,}$ 如果我写啦100.2.3这个就验证不出来
问题补充:enet_java 写道引用用正则表达式表示大于等于100&& 或者小于100的所有数字,包括小数
是不是可以理解为用正则表达式表示所有的数字,包括小数 这样写的意义是什么?
随手写了一个,不知道满足不? ^\d{2,3}(\.\d+)*
不好意思我没有表达清楚哦,
用正则表达式表示出& 大于等于100& 的所有数字& 写一个正则表达式
或者是写一个小于100的正则表达式&& 2个写其中一个就可以啦,
不是写一个即大于等于100或者小于100的正则表达式
不知道我表达清楚啦没有
问题补充:不好意思没有表达清楚,
让你们费神啦
用正则表达式表示出& 大于等于100& 的所有数字& 写一个正则表达式 ;
或者是写一个小于100的正则表达式 ;& 2个写其中一个就可以啦;
不是写一个即大于等于100或者小于100的正则表达式 ;
不知道我表达清楚啦没有
问题补充:如果我输入100.3.3.3& 或者100.3.3都不可以的要是正确的数字
问题补充:enet_java 写道问题都描述不清楚,什么是正确的数字?整数?败给你了。。。。。。&
挣点分还真是不容易呀。
大于等于100以上的整数 可以用这种方式来表达^\d{3,}
包含小数可以用 ^\d{3,}(\.\d+)*
我在表达一下 你看看我说清楚啦吗
1是一个正则表达式
2这个表达式表达的是大于等于100的数字(包含小数),如果我输入的是100.2.3&&& 或者输入0100 这些数字的是错误的& ,如果是大于或者等于100的小数只能有一个小数点,不知道我表达清楚 啦吗&&
如果没有,请回复一下我在表达一下,不好意思耽误你的时间啦
问题补充:enet_java 写道这次明白了!!
试试^[1-9]\d{2,}[\.]?\d*
呵呵给你追加啦5分,谢谢你啦,对于我刚才没有表达清楚浪费你的时间表示歉意,谢谢你啦, 不知道追加啦5分你能不能得到啊
采纳的答案
这次明白了!!
试试^[1-9]\d{2,}[\.]?\d*
^((\d*[1-9]\d{2})|(\d{1,2}[.]?\d*)|([-]\d*[.]?\d*))$
大于等于100,或者小于100的表达式就在这边了
问题都描述不清楚,什么是正确的数字?整数?败给你了。。。。。。&
挣点分还真是不容易呀。
大于等于100以上的整数 可以用这种方式来表达^\d{3,}
包含小数可以用 ^\d{3,}(\.\d+)*
^\d{3}(\.\d+)*
引用用正则表达式表示大于等于100&& 或者小于100的所有数字,包括小数
是不是可以理解为用正则表达式表示所有的数字,包括小数 这样写的意义是什么?
随手写了一个,不知道满足不? ^\d{2,3}(\.\d+)*
已解决问题
未解决问题Java正则表达式提取字符的方法实例
转载 &发布时间:日 09:27:18 & 作者:catoop
正好遇到一个需求需要将字符串中特定的字符全部提取出来,这个如果是按常规的字符串处理的话非常的繁琐。于是想到用正则表达式来完成,对java正则表达式提取字符的方式实例感兴趣的朋友一起学习吧
正好遇到一个需求需要将字符串中特定的字符全部提取出来,这个如果是按常规的字符串处理的话非常的繁琐。于是想到用正则表达式来完成。项目需求是这样的:需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6
实现方法:
import java.util.regex.M
import java.util.regex.P
public class Test {
public static void main(String[] args) {
String s = "A876X";
// 把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来
// 在这里,我们要提取最后一个数字,正则规则就是“一个数字加上大于等于0个非数字再加上结束符”
Pattern pattern = Pattern.compile("(\\d)[^\\d]*$");
Matcher matcher = pattern.matcher(s);
if(matcher.find())
System.out.println(matcher.group(1));
关于Matcher 中的几个方法说明:
Mathcer.start()/ Matcher.end()/ Matcher.group()
当使用matches(),lookingAt(),find()执行匹配操作后,就可以利用以上三个方法得到更详细的信息.
start()返回匹配到的子字符串在字符串中的索引位置.
end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.
group()返回匹配到的子字符串
Java代码示例:
Pattern p=Pattern.compile(“\d+”);
Matcher m=p.matcher(“aaa2223bb”);
m.find();//匹配2223
m.start();//返回3
m.end();//返回7,返回的是2223后的索引号
m.group();//返回2223
Mathcer m2=p.matcher(“2223bb”);
m2.lookingAt(); //匹配2223
m2.start(); //返回0,由于lookingAt()只能匹配前面的字符串,所以当使用lookingAt()匹配时,start()方法总是返回0
m2.end(); //返回4
m2.group(); //返回2223
Matcher m3=p.matcher(“2223”); //如果Matcher m3=p.matcher(“2223bb”); 那么下面的方法出错,因为不匹配返回false
m3.matches(); //匹配整个字符串
m3.start(); //返回0
m3.end(); //返回3,原因相信大家也清楚了,因为matches()需要匹配所有字符串
m3.group(); //返回2223
说了这么多,相信大家都明白了以上几个方法的使用,该说说正则表达式的分组在java中是怎么使用的.
start(),end(),group()均有一个重载方法它们是start(int i),end(int i),group(int i)专用于分组操作,Mathcer类还有一个groupCount()用于返回有多少组.
Java代码示例:
Pattern p=Pattern.compile(“([a-z]+)(\d+)”);
Matcher m=p.matcher(“aaa2223bb”);
m.find(); //匹配aaa2223
m.groupCount(); //返回2,因为有2组
m.start(1); //返回0 返回第一组匹配到的子字符串在字符串中的索引号
m.start(2); //返回3
m.end(1); //返回3 返回第一组匹配到的子字符串的最后一个字符在字符串中的索引位置.
m.end(2); //返回7
m.group(1); //返回aaa,返回第一组匹配到的子字符串
m.group(2); //返回2223,返回第二组匹配到的子字符串
现在我们使用一下稍微高级点的正则匹配操作,例如有一段文本,里面有很多数字,而且这些数字是分开的,我们现在要将文本中所有数字都取出来,利用java的正则操作是那么的简单.
Java代码示例:
Pattern p=Pattern.compile(“\d+”);
Matcher m=p.matcher(“我的QQ是:456456 我的电话是:0532214 我的邮箱是:”);
while(m.find()) {
System.out.println(m.group());
如将以上while()循环替换成
while(m.find()) {
System.out.println(m.group());
System.out.print(“start:”+m.start());
System.out.println(” end:”+m.end());
start:6 end:12
start:19 end:26
start:36 end:39
现在大家应该知道,每次执行匹配操作后start(),end(),group()三个方法的值都会改变,改变成匹配到的子字符串的信息,以及它们的重载方法,也会改变成相应的信息.
注意:只有当匹配操作成功,才可以使用start(),end(),group()三个方法,否则会抛出java.lang.IllegalStateException,也就是当matches(),lookingAt(),find()其中任意一个方法返回true时,才可以使用。
以上内容给介绍了Java正则表达式提取字符的方法实例,希望对大家有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具java正则表达式提取数字的方法实例
转载 &发布时间:日 09:42:35 & 作者:
这篇文章主要介绍了java正则表达式提取数字的方法,还有去除字符串数字的方法,大家参考使用吧
代码如下:@Test&&& public void test33() {&&&&&&& String phoneString = "哈哈,";&&&&&&& // 提取数字&&&&&&& // 1&&&&&&& Pattern pattern = Pattern.compile("[^0-9]");&&&&&&& Matcher matcher = pattern.matcher(phoneString);&&&&&&& String all = matcher.replaceAll("");&&&&&&& System.out.println("phone:" + all);&&&&&&& // 2&&&&&&& Pattern.compile("[^0-9]").matcher(phoneString).replaceAll("");&&& }
&提取张三,去除数字 代码如下:@Test&&& public void test() {&&&&&&& // 提取张三 去除数字&&&&&&& String r_name3 = "张三
000000";&&&&&&& Pattern pattern = Pattern.compile("[\\d]");&&&&&&& Matcher matcher = pattern.matcher(r_name3);&&&&&&& System.out.println(matcher.replaceAll("").trim());&&& }
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Java - 正则表达式的运用(Pattern模式和Matcher匹配)—— 匹配中文,英文字母和数字及_长度详解——收集资源blog - blog-java- - ITkeyowrd
Java - 正则表达式的运用(Pattern模式和Matcher匹配)—— 匹配中文,英文字母和数字及_长度详解——收集资源blog
在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理。 匹配中文:[\u4e00-\u
领取地址:
java.util.regex.Pattern & 模式类:用来表示一个编译过的正则表达式。 java.util.regex.Matcher & 匹配类:用模式匹配一个字符串所表达的抽象结果。 二、先看一个简单的例子: 需求:从字符串:{&_type&:&FQDN&,&_oid&:&51a867eb1422ad&} 中取出这段数字: 51a867eb1422ad 没有用过正则表达式的程序员可能分为两步获取 1. 用String类的indexOf方法获取 51a867eb1422ad的初始位置 2. 用String类的subString方法取出 51a867eb1422ad 用这种方法的缺点是代码可阅读性很差,即我们常说的hard code 如果用正则表达式则可以用以下的方法: & & & & & & & & & &String reg =&[0-9A-Za-z]{24,}&; // appear at least 24 times ^[0-9A-Za-z]{24,} & & & & & & & & & & Pattern pattern = Pattern.compile(reg); & & & & & & & & & & Matcher matcher = pattern.matcher(str); & & & & & & & & & & if (matcher.find()) {// matcher.matchers() { & & & & & & & & & & & & String fqdnId = matcher.group(); & & & & & & & & & & } 三、一些常见的问题 1. &^ 和 $ 他们是分别用来匹配字符串的开始和结束。(锁定模式的应用范围)
& & & & &&^wangsheng&:&开头一定要有&wangsheng&的字符串才能被匹配;
   &&isJoshWang$&:&结尾一定要由&isJoshWang&的字符串来结尾;
  &^abc$&: 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配。
  &notice&: 匹配包含notice的字符串。
用这个两个字符就将模式锁定在一定范围里面。
2. Java对反斜线的处理问题: 在其他语言中,\表示要插入一个字符;
& 在Java语言中,\表示要插入正则表达式的反斜线,并且后面的字符有特殊意义。 在Java正则表达式中,如果要插入一个字符,则需要在正则表达式中写成
,原因是下APIDoc定义\表示一个反斜线。 但是如果在正则表示式中表示回车换行等,则不需要多添加反斜线了。比如回车r就写作r. 3. 常用的与正则表达式相关的API & 1) Matcher.find():尝试查找与模式匹配的字符序列的下一个子序列。此方法从字符序列的开头开始,如果该方法的前一次调用成功了并且从那时开始 匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始,即如果前一次找到与模式匹配的子序列则这次从这个子序列后开始查找。 2)& Matcher.matchers():判断整个字符序列与模式是否匹配。当连续用Matcher对象检查多个字符串时候,可以使用 Matcher.reset():重置匹配器,放弃其所有显式状态信息并将其添加位置设置为零。 或者Matcher.reset(CharSequence input)& 重置此具有新输入序列的匹配器来重复使用匹配器。 3) 组的概念,这个概念很重要,组是用括号划分的正则表达式,可以通过编号来引用组。 组号从0开始,有几对小括号就表示有几个组,并且组可以嵌套,组号为0的表示整个表达式,组号为1的表示第一个组,依此类推。 例如:A(B)C(D)E正则式中有三组,组0是ABCDE,组1是B,组2是D; A((B)C)(D)E正则式中有四组:组0是ABCDE,组1是BC,组2是B;组3是C,组4是D。 &int groupCount():返回匹配其模式中组的数目,不包括第0组。 String group():返回前一次匹配操作(如find())的第0组。 String group(int group):返回前一次匹配操作期间指定的组所匹配的子序列。如果该匹配成功,但指定组未能匹配字符序列的任何部分,则返回 null。 int start(int group):返回前一次匹配操作期间指定的组所匹配的子序列的初始索引。 int end(int group):返回前一次匹配操作期间指定的组所匹配的子序列的最后索引+1。 4)匹配的范围的控制 最变态的就要算lookingAt()方法了, 名字很让人迷惑,需要认真看APIDoc。 &start()& 返回以前匹配的初始索引。 end()& 返回最后匹配字符之后的偏移量。 &public boolean lookingAt()尝试将从区域开头开始的输入序列与该模式匹配。 与 matches 方法类似,此方法始终从区域的开头开始;与之不同的是,它不需要匹配整个区域。 如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。 返回:当且仅当输入序列的前缀匹配此匹配器的模式时才返回 true。 &5)&Pattern标记 &Pattern类的静态方法 static Pattern compile(String regex, int flags) &&&&&&&&& 将给定的正则表达式编译到具有给定标志的模式中。 其中的flags参数就是Pattern标记,这个标记在某些时候非常重要。 &Pattern.CANON_EQ &&&&&&&&& 启用规范等价。 Pattern.CASE_INSENSITIVE &&&&&&&&& 启用不区分大小写的匹配。 Pattern.COMMENTS &&&&&&&&& 模式中允许空白和注释。 Pattern.DOTALL &&&&&&&&& 启用 dotall 模式。 Pattern.LITERAL &&&&&&&&& 启用模式的字面值分析。 Pattern.MULTILINE &&&&&&&&& 启用多行模式。 Pattern.UNICODE_CASE &&&&&&&&& 启用 Unicode 感知的大小写折叠。 Pattern.UNIX_LINES &&&&&&&&& 启用 Unix 行模式。& &4. 字符串的替换 String.replace(char oldChar, char newChar) &&&&&&&&& 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。 String.replace(CharSequence target, CharSequence replacement) &&&&&&&&& 使用指定的字面值替换序列替换此字符串匹配字面值目标序列的每个子字符串。 String.replaceAll(String regex, String replacement) &&&&&&&&& 使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。 String.replaceFirst(String regex, String replacement) &&&&&&&&& 使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的第一个子字符串。 &StringBuffer.replace(int start, int end, String str) &&&&&&&&& 使用给定 String 中的字符替换此序列的子字符串中的字符。 StringBuilder.replace(int, int, java.lang.String) &&&&&&&&& 使用给定 String 中的字符替换此序列的子字符串中的字符。 &Matcher.replaceAll(String replacement) &&&&&&&&& 替换模式与给定替换字符串相匹配的输入序列的每个子序列。 Matcher.replaceFirst(String replacement) &&&&&&&&& 替换模式与给定替换字符串匹配的输入序列的第一个子序列。& 5、 字符串的切分 String[] split(String regex) &&&&&&&&& 根据给定的正则表达式的匹配来拆分此字符串。 &String[] split(String regex, int limit) &&&&&&&&& 根据匹配给定的正则表达式来拆分此字符串。 当然,还有一个StringTokenizer类,可以用来切分字符串,但是现在SUN已经不推荐使用了。转变下思路,其实用正则表达式也可以达到将字符串切分为段的目的。 6.&正则表达式最大的难点在于熟练书写正则表达式: 构造 & & & & & & & & & & & & & & & &匹配&字符&字符类&预定义字符类&POSIX 字符类(仅 US-ASCII)&java.lang.Character 类(简单的&
)&Unicode 块和类别的类&边界匹配器&Greedy 数量词&Reluctant 数量词&Possessive 数量词&Logical 运算符&Back 引用&引用&特殊构造(非捕获) x 字符x \ 反斜线字符 n 带有八进制值0的字符n(0&&=&n&&=&7) nn 带有八进制值0的字符nn(0&&=&n&&=&7) mnn 带有八进制值0的字符mnn(0&&=&m&&=&3、0&&=&n&&=&7) xhh 带有十六进制值&0x的字符hh uhhhh 带有十六进制值&0x的字符hhhh t 制表符 ('u0009') n 新行(换行)符 ('u000A') r 回车符 ('u000D') f 换页符 ('u000C') a 报警 (bell) 符 ('u0007') e 转义符 ('u001B') cx 对应于x的控制符 [abc] a、b或c(简单类) [^abc] 任何字符,除了a、b或c(否定) [a-zA-Z] a到z或A到Z,两头的字母包括在内(范围) [a-d[m-p]] a到d或m到p:[a-dm-p](并集) [a-z&&[def]] d、e或f(交集) [a-z&&[^bc]] a到z,除了b和c:[ad-z](减去) [a-z&&[^m-p]] a到z,而非m到p:[a-lq-z](减去) . 任何字符(与
可能匹配也可能不匹配) d 数字:[0-9] D 非数字:[^0-9] s 空白字符:[ tnx0Bfr] S 非空白字符:[^s] w 单词字符:[a-zA-Z_0-9] W 非单词字符:[^w] p{Lower} 小写字母字符:[a-z] p{Upper} 大写字母字符:[A-Z] p{ASCII} 所有 ASCII:[x00-x7F] p{Alpha} 字母字符:[p{Lower}p{Upper}] p{Digit} 十进制数字:[0-9] p{Alnum} 字母数字字符:[p{Alpha}p{Digit}] p{Punct} 标点符号:!&#$%&'()*+,-./:;&=&?@[]^_`{|}~ p{Graph} 可见字符:[p{Alnum}p{Punct}] p{Print} 可打印字符:[p{Graph}x20] p{Blank} 空格或制表符:[ t] p{Cntrl} 控制字符:[x00-x1Fx7F] p{XDigit} 十六进制数字:[0-9a-fA-F] p{Space} 空白字符:[ tnx0Bfr] p{javaLowerCase} 等效于 java.lang.Character.isLowerCase() p{javaUpperCase} 等效于 java.lang.Character.isUpperCase() p{javaWhitespace} 等效于 java.lang.Character.isWhitespace() p{javaMirrored} 等效于 java.lang.Character.isMirrored() p{InGreek} Greek&块(简单
)中的字符 p{Lu} 大写字母(简单
) p{Sc} 货币符号 P{InGreek} 所有字符,Greek 块中的除外(否定) [p{L}&&[^p{Lu}]]& 所有字母,大写字母除外(减去) ^ 行的开头 $ 行的结尾 b 单词边界 B 非单词边界 A 输入的开头 G 上一个匹配的结尾 Z 输入的结尾,仅用于最后的
(如果有的话) z 输入的结尾 X? X,一次或一次也没有 X* X,零次或多次 X+ X,一次或多次 X{n} X,恰好n次 X{n,} X,至少n次 X{n,m} X,至少n次,但是不超过m次 X?? X,一次或一次也没有 X*? X,零次或多次 X+? X,一次或多次 X{n}? X,恰好n次 X{n,}? X,至少n次 X{n,m}? X,至少n次,但是不超过m次 X?+ X,一次或一次也没有 X*+ X,零次或多次 X++ X,一次或多次 X{n}+ X,恰好n次 X{n,}+ X,至少n次 X{n,m}+ X,至少n次,但是不超过m次 XY X后跟Y X|Y X或Y (X) X,作为
n 任何匹配的nth
& Nothing,但是引用以下字符 Q Nothing,但是引用所有字符,直到E E Nothing,但是结束从Q开始的引用 (?:X) X,作为非捕获组 (?idmsux-idmsux)& Nothing,但是将匹配标志
&on - off (?idmsux-idmsux:X)&& X,作为带有给定标志
&on - off (?=X) X,通过零宽度的正 lookahead (?!X) X,通过零宽度的负 lookahead (?&=X) X,通过零宽度的正 lookbehind (?&!X) X,通过零宽度的负 lookbehind (?&X) X,作为独立的非捕获组
反斜线、转义和引用
反斜线字符 ('') 用于引用转义构造,如上表所定义的,同时还用于引用其他将被解释为非转义构造的字符。因此,表达式 \与单个反斜线匹配,而{与左括号匹配。
在不表示转义构造的任何字母字符前使用反斜线都是错误的;它们是为将来扩展正则表达式语言保留的。可以在非字母字符前使用反斜线,不管该字符是否非转义构造的一部分。
根据&的要求,Java 源代码的字符串中的反斜线被解释为&或其他。因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。例如,当解释为正则表达式时,字符串字面值 &b&与单个退格字符匹配,而&\b&与单词边界匹配。字符串字面值&(hello)&是非法的,将导致编译时错误;要与字符串(hello)匹配,必须使用字符串字面值&\(hello\)&。
字符类可以出现在其他字符类中,并且可以包含并集运算符(隐式)和交集运算符 (&&)。并集运算符表示至少包含其某个操作数类中所有字符的类。交集运算符表示包含同时位于其两个操作数类中所有字符的类。
字符类运算符的优先级如下所示,按从最高到最低的顺序排列: 1&&&& 2&&&& 3&&&& 4&&&& 5&&&& 字面值转义&&&& x 分组 [...] 范围 a-z 并集 [a-e][i-u] 交集 [a-z&&[aeiou]]
注意,元字符的不同集合实际上位于字符类的内部,而非字符类的外部。例如,正则表达式.在字符类内部就失去了其特殊意义,而表达式-变成了形成元字符的范围。
行结束符是一个或两个字符的序列,标记输入字符序列的行结尾。以下代码被识别为行结束符:
新行(换行)符 ('n')、
后面紧跟新行符的回车符 (&rn&)、
单独的回车符 ('r')、
下一行字符 ('u0085')、
行分隔符 ('u2028') 或
段落分隔符 ('u2029)。
如果激活模式,则新行符是唯一识别的行结束符。
如果未指定标志,则正则表达式.可以与任何字符(行结束符除外)匹配。
默认情况下,正则表达式^和$忽略行结束符,仅分别与整个输入序列的开头和结尾匹配。如果激活模式,则^在输入的开头和行结束符之后(输入的结尾)才发生匹配。处于模式中时,$仅在行结束符之前或输入序列的结尾处匹配。
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式((A)(B(C)))中,存在四个这样的组: 1&&&& 2&&&& 3&&&& 4&&&& ((A)(B(C))) A (B(C)) (C)
组零始终代表整个表达式。
之所以这样命名捕获组是因为在匹配中,保存了与这些组匹配的输入序列的每个子序列。捕获的子序列稍后可以通过 Back 引用在表达式中使用,也可以在匹配操作完成后从匹配器获取。
与组关联的捕获输入始终是与组最近匹配的子序列。如果由于量化的缘故再次计算了组,则在第二次计算失败时将保留其以前捕获的值(如果有的话)例如,将字符串&aba&与表达式(a(b)?)+相匹配,会将第二组设置为&b&。在每个匹配的开头,所有捕获的输入都会被丢弃。
以(?)开头的组是纯的非捕获组,它不捕获文本,也不针对组合计进行计数。
Unicode 支持
此类符合&第 1 级和 RL2.1 Canonical Equivalents。
Java 源代码中的 Unicode 转义序列(如 u2014)是按照 Java Language Specification 的&中的描述处理的。这样的转义序列还可以由正则表达式解析器直接实现,以便在从文件或键盘击键读取的表达式中使用 Unicode 转义。因此,可以将不相等的字符串 &u2014&和&\u2014&编译为相同的模式,从而与带有十六进制值0x2014的字符匹配。
与 Perl 中一样,Unicode 块和类别是使用 p和P构造编写的。如果输入具有属性prop,则与p{prop}匹配,而输入具有该属性时与P{prop}不匹配。块使用前缀In指定,与在InMongolian中一样。可以使用可选前缀Is指定类别:p{L}和p{IsL} 都表示 Unicode 字母的类别。块和类别在字符类的内部和外部都可以使用。
受支持的类别是由类指定版本中的&的类别。类别名称是在 Standard 中定义的,即标准又丰富。Pattern所支持的块名称是所接受和定义的有效块名称。
行为类似 java.lang.Character boolean 是&methodname方法(废弃的类别除外)的类别,可以通过相同的p{prop}语法来提供,其中指定的属性具有名称javamethodname。
与 Perl 5 相比较
Pattern&引擎用有序替换项执行传统上基于 NFA 的匹配,与 Perl 5 中进行的相同。
此类不支持 Perl 构造:
条件构造(?{X})和(?(condition)X|Y)、
嵌入式代码构造(?{code})和(??{code})、
嵌入式注释语法(?#comment)和
预处理操作lu、L和U。
此类支持但 Perl 不支持的构造:
Possessive 数量词,它可以尽可能多地进行匹配,即使这样做导致所有匹配都成功时也如此。
字符类并集和交集,如所述。
与 Perl 的显著不同点是:
在 Perl 中,1到9 始终被解释为 Back 引用;如果至少存在多个子表达式,则大于 9 的反斜线转义数按 Back 引用对待,否则在可能的情况下,它将被解释为八进制转义。在此类中,八进制转义必须始终以零开头。在此类中,1到9 始终被解释为 Back 引用,较大的数被接受为 Back 引用,如果在正则表达式中至少存在多个子表达式的话;否则,解析器将删除数字,直到该数小于等于组的现有数或者其为一个数字。
Perl 使用 g标志请求恢复最后匹配丢失的匹配。此功能是由类显式提供的:重复执行方法调用可以恢复丢失的最后匹配,除非匹配器被重置。
在 Perl 中,位于表达式顶级的嵌入式标记对整个表达式都有影响。在此类中,嵌入式标志始终在它们出现的时候才起作用,不管它们位于顶级还是组中;在后一种情况下,与在 Perl 中类似,标志在组的结尾处还原。
Perl 允许错误匹配构造,如在表达式 *a中,以及不匹配的括号,如在在表达式abc] 中,并将其作为字面值对待。此类还接受不匹配的括号,但对 +、? 和 * 不匹配元字符有严格限制;如果遇到它们,则抛出。
匹配中文:[\u4e00-\u9fa5]&
英文字母:[a-zA-Z]&
数字:[0-9]&
匹配中文,英文字母和数字及_:&
^[\u4e00-\u9fa5_a-zA-Z0-9]+$
同时判断输入长度:
[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}
^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$ 1、一个正则表达式,只含有汉字、数字、字母、下划线不能以下划线开头和结尾:
^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$&&其中:
^&&与字符串开始的地方匹配
(?!_)  不能以_开头
(?!.*?_$)  不能以_结尾
[a-zA-Z0-9_\u4e00-\u9fa5]+  至少一个汉字、数字、字母、下划线
$  与字符串结束的地方匹配
放在程序里前面加@,否则需要\\进行转义 @&^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$&
(或者:@&^(?!_)\w*(?&!_)$&& & 或者&&@& ^[\u4E00-\u9FA50-9a-zA-Z_]+$ &&&)
2、只含有汉字、数字、字母、下划线,下划线位置不限:
^[a-zA-Z0-9_\u4e00-\u9fa5]+$
3、由数字、26个英文字母或者下划线组成的字符串
4、2~4个汉字
@&^[\u4E00-\u9FA5]{2,4}$&;&
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
用:(Abc)+& & 来分析:&&XYZAbcAbcAbcXYZAbcAb
XYZAbcAbcAbcXYZAbcAb6、
[^\u4E00-\u9FA50-9a-zA-Z_]
34555#5' --&34555#5'
[\u4E00-\u9FA50-9a-zA-Z_]& & eiieng_89_& &---&& &eiieng_89_
_';'eiieng_88&*9_& & --&&&_';'eiieng_88&*9_
_';'eiieng_88_&*9_&&--&&&_';'eiieng_88_&*9_
public&&bool RegexName(string str)
bool flag=Regex.IsMatch(str,@&^[a-zA-Z0-9_\u4e00-\u9fa5]+$&);
Regex& &reg=new& &Regex(&^[a-zA-Z_0-9]+$&);& &
if(reg.IsMatch(s))& &
\\符合规则& &
\\存在非法字符& &
最长不得超过7个汉字,或14个字节(数字,字母和下划线)正则表达式
^[\u4e00-\u9fa5]{1,7}$|^[\dA-Za-z_]{1,14}$
常用正则表达式大全!(例如:匹配中文、匹配html)
匹配中文字符的正则表达式: [u4e00-u9fa5]& &
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了&
匹配双字节字符(包括汉字在内):[^x00-xff]&
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)&
匹配空白行的正则表达式:ns*r&
评注:可以用来删除空白行&
匹配HTML标记的正则表达式:&(S*?)[^&]*&.*?|&.*? /&&
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力&
匹配首尾空白字符的正则表达式:^s*|s*$&
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式&
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*&
评注:表单验证时很实用&
匹配网址URL的正则表达式:[a-zA-z]+://[^s]*&
评注:网上流传的版本功能很有限,上面这个基本可以满足需求&
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$&
评注:表单验证时很实用&
匹配国内电话号码:d{3}-d{8}|d{4}-d{7}&
评注:匹配形式如
匹配腾讯QQ号:[1-9][0-9]{4,}&
评注:腾讯QQ号从10000开始&
匹配中国邮政编码:[1-9]d{5}(?!d)&
评注:中国邮政编码为6位数字&
匹配身份证:d{15}|d{18}&
评注:中国的身份证为15位或18位&
匹配ip地址:d+.d+.d+.d+&
评注:提取ip地址时有用&
匹配特定数字:&
^[1-9]d*$    //匹配正整数&
^-[1-9]d*$   //匹配负整数&
^-?[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)&
评注:处理大量数据时有用,具体应用时注意修正&
匹配特定字符串:&
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串&
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串&
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串&
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串&
^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串&
在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:&
只能输入数字:“^[0-9]*$”&
只能输入n位的数字:“^d{n}$”&
只能输入至少n位数字:“^d{n,}$”&
只能输入m-n位的数字:“^d{m,n}$”&
只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”&
只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”&
只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”&
只能输入非零的正整数:“^+?[1-9][0-9]*$”&
只能输入非零的负整数:“^-[1-9][0-9]*$”&
只能输入长度为3的字符:“^.{3}$”&
只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”&
只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”&
只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”&
只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”&
只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”&
验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,&
只能包含字符、数字和下划线。&
验证是否含有^%&',;=?$&等字符:“[^%&',;=?$x22]+”&
只能输入汉字:“^[u4e00-u9fa5],{0,}$”&
验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”&
验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”&
验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$”&
正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,&
“XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。&
验证身份证号(15位或18位数字):“^d{15}|d{}18$”&
验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”&
验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”&
正确格式为:“01”“09”和“1”“31”。&
匹配中文字符的正则表达式: [u4e00-u9fa5]&
匹配双字节字符(包括汉字在内):[^x00-xff]&
匹配空行的正则表达式:n[s| ]*r&
匹配HTML标记的正则表达式:/&(.*)&.*|&(.*) /&/&
匹配首尾空格的正则表达式:(^s*)|(s*$)&
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*&
匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?&
(1)应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)&
String.prototype.len=function(){return this.replace([^x00-xff]/g,&aa&).}&
(2)应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现&
String.prototype.trim = function()&
return this.replace(/(^s*)|(s*$)/g, &&);&
(3)应用:利用正则表达式分解和转换IP地址&
function IP2V(ip) //IP地址转换成对应数值&
re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式&
if(re.test(ip))&
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1&
throw new Error(&Not a valid IP address!&)&
(4)应用:从URL地址中提取文件名的javascript程序&
s=&http://www.juapk.com/forum.php&;&
s=s.replace(/(.*/){0,}([^.]+).*/ig,&$2&) ;//Page1.htm&
(5)应用:利用正则表达式限制网页表单里的文本框输入内容&
用正则表达式限制只能输入中文:onkeyup=&value=value.replace(/[^u4E00-u9FA5]/g,') &onbeforepaste=&clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,'))&&
用正则表达式限制只能输入全角字符:onbeforepaste=&clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,'))&&
用正则表达式限制只能输入数字:onkeyup=&value=value.replace(/[^d]/g,') &onbeforepaste= &clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,'))&&
用正则表达式限制只能输入数字和英文:onkeyup=&value=value.replace(/[W]/g,') &onbeforepaste=&clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,'
public static void main(String[] args) {
String patternStr = &\u300a.+\u300b&;
Pattern pattern = Pattern.compile(patternStr);
String input = &《21世纪》记者&;
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
System.out.println(input.substring(start, end));
System.out.println(&not found&);
//output: 《21世纪》
1.java验证IP地址:
Pattern pattern = Pattern.compile(“\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b”);
Matcher matcher = pattern.matcher(“127.400.600.2″); //以验证127.400.600.2为例
System.out.println(matcher.matches());
2. java验证日期时间,解决润月:
Pattern pattern = Pattern.compile(“^((\\d{2}(([0])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([09])|([189]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$”);
Matcher matcher = pattern.matcher(“ 23:59:59″);
System.out.println(matcher.matches());
3.java验证邮箱格式:
Pattern pattern = Pattern.compile(“^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$”);
Matcher matcher = pattern.matcher(“”);
System.out.println(matcher.matches());
1.文本框只能输入数字代码(小数点也不能输入)
&input onkeyup=&this.value=this.value.replace(//D/g,'')& onafterpaste=&this.value=this.value.replace(//
java.util.regex.Pattern
模式类:用来表示一个编译过的正则表达式。 java.util.regex.Matcher
匹配类:用模式匹配一个字符串所表达的抽象结果。 二、先看一个简单的例子: 需求:从字符串
相关阅读排行
相关内容推荐
请激活账号
为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。
您的注册邮箱:
如果您没有收到激活邮件,请注意检查垃圾箱。}

我要回帖

更多关于 java 正则判断长度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信