java pattern 正则表达式,java正则表达式怎么书写?
java pattern 正则表达式,java正则表达式怎么书写?详细介绍
本文目录一览: Java Pattern的用法是什么?
java 中pattern为正则表达式的编译表示形式。指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。例子如下:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches
在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。
java 中pattern为正则表达式的编译表示形式。指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。例子如下:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches
在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。
java正则表达式怎么书写?
Java 正则表达式和 Perl 的是最为相似的,正则表达式就是规则表达式。
Java中正则表达式与之前使用的Python是有区别的,区别在于Java对于反斜线(\)处理的不同。 在Python中”\d”表示 匹配一位数字(0-9),而Java中匹配一位数字(0-9),需要的正则表达式为”\\d”。 不过换行符和制表符只需要单反斜线“\n\t”。
正则表达式定义了字符串的模式。可以用来搜索、编辑或处理文本。不仅限于某一种语言,但是在每种语言中有细微的差别。
^[0-9a-zA-Z\\-]+$
java常用简单正则表达式写法
邮箱的判断
1 /**2 * 判断email是否合法3 */4 public static boolean checkLoginEmail(String loginStr) {5 String regEx = "^([a-z0-9_A-Z]+[-|\\.]?)+[a-z0-9_A-Z]@([a-z0-9_A-Z]+(-[a-z0-9_A-Z]+)?\\.)+[a-zA-Z_]{2,}$";6 Pattern p = Pattern.compile(regEx);7 Matcher m = p.matcher(loginStr);8 return m.matches();// boolean9 }
简单格式
public static boolean isKaChao(String kachao){Pattern p = Pattern.compile("^(0){5}3[0-9]{4}$");Matcher m = p.matcher(kachao);return m.matches();}
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
下面介绍具体的方法。
1、步骤一 : 新建一个工程和类
我们在这个类中开发相关的代码,先看看 java.util.regex 这个包吧。
2、步骤二 : 类 Pattern 的使用
类Pattern , 其一个对象就代表一种指定的正则表达式,我们通过这个类和一些正则表达式的规则来生成自己想要的字符串匹配规则!
这个类,你无法通过 new 来创建对象,其提供了一个静态方法 compile("正则规则串")来创建对象, 比如我们想要一个以 "java" 开头的字符串匹配规则,我们会用如下代码 Pattern 对象 :
Pattern pattern = Pattern.compile("^java");
注意 : ^ 这个符号是正则表达式中的规则,表示字符串的开头!关于其他规则,我们后面会有相关经验给大家逐一介绍!
3、步骤三 : 类 Matcher 的使用
类 Matcher, 代表一个串在特定Pattern对象下的匹配结果,我们通过这个结果可以知道这个串是否符合我们的要求 (我们的具体要求在 Pattern 对象中体现!)。使用方法为 :
// 先构建一个特定的 Pattern 对象Pattern pattern = Pattern.compile("^java"); // 调用 Pattern 对象的 matcher 方法,传入一个串,得到匹配结果!Matcher matcher = javaPrefixPattern.matcher("一个字符串");4、步骤四 : 测试和总结
运行代码,查看程序运行效果!正则表达式的整个使用框架就是这样,其不同的应用场景基本就是不同的匹配规则!
总结 :正则表达式的彪悍,主要在于其很多成熟的规范的语义规则,通过这些规则的灵活使用,我们可以把一种复杂的匹配需求用一个规则串表达出来!
Java JDK正则表达
一、概述正则表达式是Java处理字符串、文本的重要工具。Java对正则表达式的处理集中在以下两个两个类:java.util.regex.Matcher 模式类:用来表示一个编译过的正则表达式。java.util.regex.Pattern 匹配类:用模式匹配一个字符串所表达的抽象结果。(新版的Java Doc有解释。)比如一个简单例子:Java代码import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegxOperator {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubPattern p = Pattern.compile("f(.+?)k");Matcher m = p.matcher("fckfkkfkf");while (m.find()) {String s0 = m.group();String s1 = m.group(1);System.out.println(s0 + "||" + s1);}System.out.println("---------");m.reset("fucking!");while (m.find()) {System.out.println(m.group());}Pattern p1 = Pattern.compile("f(.+?)i(.+?)h");Matcher m1 = p1.matcher("finishabigfishfrish");while (m1.find()) {String s0 = m1.group();String s1 = m1.group(1);String s2 = m1.group(2);System.out.println(s0 + "||" + s1 + "||" + s2);}System.out.println("---------");Pattern p3 = Pattern.compile("(19|20)\d\d([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])");Matcher m3 = p3.matcher("1900-01-01 2007/08/13 1900.01.01 1900 01 01 1900-01.01 1900 13 01 1900 02 31");while (m3.find()) {System.out.println(m3.group());}}}输出结果:fck||cfkk||k---------fuckfinish||in||sfishfrish||ishfr||s---------1900-01-012007/08/131900.01.011900 01 011900 02 31Java代码import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test {public static void main(String args[]) {String rawDate = "1900-01-01 2007/08/13 1900.01.01 1900 01 01 1900-01.01 1900 13 01 1900 02 31";String patternStr = "(\d{4})[- /.](\d{2})[- /.](\d{2})";Pattern pattern = Pattern.compile(patternStr);Matcher matcher = pattern.matcher(rawDate);while(matcher.find()){System.out.println("full date is " + matcher.group());System.out.println("year is " + matcher.group(1));System.out.println("month is " + matcher.group(2));System.out.println("date is " + matcher.group(3));}}}full date is 1900-01-01year is 1900month is 01date is 01full date is 2007/08/13year is 2007month is 08date is 13full date is 1900.01.01year is 1900month is 01date is 01full date is 1900 01 01year is 1900month is 01date is 01full date is 1900-01.01year is 1900month is 01date is 01full date is 1900 13 01year is 1900month is 13date is 01full date is 1900 02 31year is 1900month is 02date is 31二、一些容易迷糊的问题1、Java对反斜线处理的问题在其他语言中,\表示要插入一个字符;在Java语言中,\表示要插入正则表达式的反斜线,并且后面的字符有特殊意义。看API文档:预定义字符类. 任何字符(与行结束符可能匹配也可能不匹配)d 数字:[0-9]D 非数字: [^0-9]s 空白字符:[ x0Bf]S 非空白字符:[^s]w 单词字符:[a-zA-Z_0-9]W 非单词字符:[^w]但是看看上面程序,对比下不难看出:d在实际使用的时候就写成了 \d;在Java正则表达式中,如果要插入一个字符,则需要在正则表达式中写成\\,原因是下面的APIDoc定义\表示一个反斜线。但是如果在正则表示式中表示回车换行等,则不需要多添加反斜线了。比如回车就写作.字符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 的字符 hhuhhhh 带有十六进制值 0x 的字符 hhhh制表符 ('u0009')新行(换行)符 ('u000A')回车符 ('u000D')f 换页符 ('u000C')a 报警 (bell) 符 ('u0007')e 转义符 ('u001B')cx 对应于 x 的控制符2、Matcher.find():尝试查找与模式匹配的字符序列的下一个子序列。此方法从字符序列的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始,即如果前一次找到与模式匹配的子序列则这次从这个子序列后开始查找。3、Matcher.matchers():判断整个字符序列与模式是否匹配。当连续用Matcher对象检查多个字符串时候,可以使用Matcher.reset():重置匹配器,放弃其所有显式状态信息并将其添加位置设置为零。或者Matcher.reset(CharSequence input) 重置此具有新输入序列的匹配器。来重复使用匹配器。4、组的概念,这个概念很重要,组是用括号划分的正则表达式,可以通过编号来引用组。组号从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。5、匹配的范围的控制最变态的就要算lookingAt()方法了,名字很让人迷惑,需要认真看APIDoc。start() 返回以前匹配的初始索引。end() 返回最后匹配字符之后的偏移量。public boolean lookingAt()尝试将从区域开头开始的输入序列与该模式匹配。与 matches 方法类似,此方法始终从区域的开头开始;与之不同的是,它不需要匹配整个区域。如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。返回:当且仅当输入序列的前缀匹配此匹配器的模式时才返回 true。#p#副标题#e#6、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 行模式。三、字符串的替换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)替换模式与给定替换字符串匹配的输入序列的第一个子序列。四、字符串的切分String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串。String[] split(String regex, int limit)根据匹配给定的正则表达式来拆分此字符串。当然,还有一个StringTokenizer类,可以用来切分字符串,但是现在SUN已经不推荐使用了。转变下思路,其实用正则表达式也可以达到将字符串切分为段的目的。#p#副标题#e#
求个正则表达式java的
你这儿需求应该用:
String regex = "[\\x21-\\x7E]+";
import java.util.regex.Pattern;public class Demo { public static void main(String[] args) throws Exception { String regex = "[\\x21-\\x7E]+"; Pattern pattern = Pattern.compile(regex); System.out.println(pattern.matcher("12345").matches()); System.out.println(pattern.matcher("afdfargeaweg").matches()); System.out.println(pattern.matcher("~!@#$%^&*()_+-={}|[]").matches()); System.out.println(pattern.matcher("afdfwe234124*&^%%").matches()); }}你会发现输出都是 true。
\\x21-\\x7E 代表 ASCII 从 33~126 的字符(\x 是16进制的意思)。看 ASCII 码表:
你会发现你要求的字符正是从 33 ~ 126。(32 是空格,127 是 Backspace(就是我们常用的的删除键对应的字符)。
java正则表达式怎么写
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternDemo {
/**
* @param args
*/
public static void main(String[] args) {
String str = ",a b c,a,c";
Pattern pattern = Pattern.compile("a[^,]*c");
Matcher matcher = pattern.matcher(str);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
java正则表达式如何获取字符串中所有匹配内容
java正则表达式如何获取字符串中所有匹配内容 java正则表达式提取需要用到Matcher类。
正则规则就是“一个数字加上大于等于0个非数字再加上结束符”
Pattern pattern
= Pattern.pile("(\\d)[^\\d]*$")
Matcher matcher
= pattern.matcher(s)
if(matcher.find())
System.out.println
(matcher.group(1)); } }
如何获取字符串中匹配到正则表达式的子串开 mport java.util.regex.Matcher;import java.util.regex.Pattern;public class Test {public static void main(String[] args) {String s = "A876X"; 把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来 在这里,我们要提取最后一个数字,正则规则就是“一个数字加上大于等于0个非数字再加上结束符”Pattern pattern = Pattern.pile("(\\d)[^\\d]*$");Matcher matcher = pattern.matcher(s);if(matcher.find())System.out.println(matcher.group(1));}}
正则表达式获取字符串 string pattern=@"(.+?)" 取分组 Match.group[1]
JS如何用正则表达式 获取字符串内的匹配部份? 实现的效果:在字符串中abcdefgname='test'sddfhskshjsfsjdfps中获取name的值test 实现的机制:通过replace的回调函数获取。
可以通过下面的代码获取匹配部分
var str = "abcdefgname='test'sddfhskshjsfsjdfps";
var reg = /name='((\w|-|\s)+)/ig;
str.replace(reg, function() { console.log(arguments.length); 5 console.log(arguments[1]);test });
字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
正则表达式如何获取被匹配字符串的匹配组名 java正则提取需要用到Matcher类,下面给出案例示例供参考 需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { String s = "A876X"; 把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来 在这里,我们要提取最后一个数字,正则规则就是“一个数字加上大于等于0个非数字再加上结束符” Pattern pattern = Pattern.pile("(\\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()返回匹配到的子字符串 示例代码如下,具体功能请参考注释 Pattern p=Pattern.pile(“\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 另外,Mathcer类中start(),end(),group()均有一个重载方法它们是start(int i),end(int i),group(int i)专用于分组操作,Mathcer类还有一个groupCount()用于返回有多少组. 示例如下: Pattern p=Pattern.pile(“([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,返回第二组匹配到的子字符串 注意: 只有当匹配操作成功,才可以使用start(),end(),group()三个方法,否则会抛出java.lang.IllegalStateException,也就是当matches(),lookingAt(),find()其中任意一个方法返回true时,才可以使用。
C# 正则表达式获取字符串? 针对你的问题:
是给数组命名 (?
subexpression) 其中name是有效的组名称,而subexpression是任何有效的正则表达式模式。 name不得包含任何标点符号字符,并且不能以数字开头。 这个方式相当于下面这个表达式 "(?
<!--0-9a-zA-Z)([0-9]|[a-z]|[A-Z]){1,}" java正则表达式如何获取分组匹配内容 String str = "我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa."; \d 表示0-9 任意一个数字 后面有+号 说明这个0-9单个数位出现一到多次 比如21312314 String reg = "\\d+"; Pattern是一个正则表达式经编译后的表现模式。 Pattern pattern = Pattern.pile (reg); Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。 Matcher matcher = pattern.matcher (str); 只有执行了find()方法 后,状态机matcher才是真正开始进行匹配工作的! while (matcher.find ()) { matcher.group()返回匹配到的子字符串 System.out.println (matcher.group ()); } }
Java正则表达式匹配是否存在字符串。 正则表达式为:.*a.*b.*c.* package .test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexTest { /** * @param args */ public static void main(String[] args) { TODO Auto-generated method stub String source = "abcdefg\n" + "uaibec\n" + "wabbcd\n" + "adb\n" + "acb"; String regex = "(.*a.*b.*c.*)"; Pattern pattern = Pattern.pile(regex,Pattern.MULTILINE); Matcher matcher = pattern.matcher(source); while(matcher.find()){ System.out.println(matcher.group()); } } } 你可以直接复制出来,运行一下就可以了
java编程基础 正则表达式
//判断用户名是否符合规则(必须十一位数,包括数字和字母,且以字母开头;)
Pattern pattern = Pattern.compile("^[a-zA-Z]|[a-zA-Z0-9]{10}$");//将给定的正则表达式编译到模式中
//判读存款金额是否合法(单次存款金额不超过10000元(包括),且必须是100的整数倍)
Pattern pattern = Pattern.compile("^[1-9][0-9]{0,1}00$|^10000$");
//判断取款金额是否合法(单次取款金额不超过3000(包括)元,且必须是100的整数倍.)
Pattern pattern = Pattern.compile("^3000$|^[3-9]00$|^[1][0-9]{0,1}00$|^[2][0-9]{0,1}00$");
现在都是信息化的时代,没有一门好的技术是难以在社会之中立足的,
现在的电脑技术飞速增长,每家公司都需要电脑人才,你可以去学习电脑专业,
在这个领域中还是有很大的发展空间的,只要自己好好学习,以后的前景不可限量。
//必须十一位数,包括数字和字母,且以字母开头 Pattern pattern = Pattern.compile("^[a-zA-Z][a-zA-Z0-9]{10}$");//将给定的正则表达式编译到模式中 //判读存款金额是否合法(单次存款金额不超过10000元(包括),且必须是100的整数倍) Pattern pattern = Pattern.compile("^[1-9][0-9]{0,1}00$|^10000$"); //判断取款金额是否合法(单次取款金额不超过3000(包括)元,且必须是100的整数倍.) Pattern pattern = Pattern.compile("^[1-3][0-9]{0,1}00$");
java正则表达式 我想把有z字符串中的“},{”的替换为“}},{”用pattern 和matcher 怎么写
import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegEx { public static void main(String[] args) { String pattern = "\\}, \\{"; String replacement = "}}, {"; String z = "{(3, 4, 5), {6,} {}, {7}, {8}, {10}, [11]}"; String result = new String(); Pattern p = Pattern.compile(pattern); Matcher m = p.matcher(z); if (m.find()) { result = m.replaceAll(replacement); } else { System.out.println("No Match."); return; } System.out.println("Original String: \n" + z + "\nResult String: \n" + result); }}
结果如下:
JAVA正则表达式判断 只能包含汉字、英文、“_”和数字 ,正则该怎么写呢?
正则表达式如下:
String pattern = "[\u4e00-\u9fa5\\w]+";
其中:\u4e00-\u9fa5 代表中文,\\w代表英文、数字和“_",中括号代表其中的任意字符,最后的加号代表至少出现一次。
匹配中文:[\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个英文字母或者下划线组成的字符串
^\w+$
4、2~4个汉字
@"^[\u4E00-\u9FA5]{2,4}$";
5、
^[\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]+$");
return flag;
}
Regex reg=new Regex("^[a-zA-Z_0-9]+$");
if(reg.IsMatch(s))
{
\\符合规则
}
else
{
\\存在非法字符
}
最长不得超过7个汉字,或14个字节(数字,字母和下划线)正则表达式
^[\u4e00-\u9fa5]{1,7}$|^[\dA-Za-z_]{1,14}$
参考:http://hi.baidu.com/slcands2/item/fc1f75fa412f7219a62988ac
[a-zA-Z0-9\u4E00-\u9FA5_]+
([\u4e00-\u9fa5a-zA-Z_0-9]*
正则表达式:[\\u4e00-\\u9fa5]*|\\w*|\\d*|_*
代码如下:
@Testpublic void test1(){//匹配正则表达式表达式String str = "[\\u4e00-\\u9fa5]*|\\w*|\\d*|_*";Pattern pattern = Pattern.compile(str);//要匹配的字符串String mStr = "还有多远_344fjdk";System.out.println("测试的字符串:"+mStr);Matcher m = pattern.matcher(mStr);//如果匹配到了if(m.find()){System.out.println("匹配内容:"+m.group());}}
程序运行结果:
扩展资料
匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,"单词"字符使用Unicode字符集,中文的为:[\\u4e00-\\u9fa5],表示英文字母的为\w,表示数字的为\d,表示_的为_,而*号表示的则是0个或多个,|表示的则是或,所以把每个要匹配的用|拼接可以表示要匹配的正则表达式。
参考资料:oracle官网-Java SE API 和文档