java正则表达式,要求是匹配的字符串,只能包含3或5或6这3个数字并且每个数字由;隔开

以下能匹配,必须是数字3,5,6开头,且以数字3,5,6结尾,中间使用;分割

varregex=/^[356](;[356])*$/;

console.log(regex.test('3'));//true
console.log(regex.test('3;'));//false
console.log(regex.test('35'));//false
console.log(regex.test('3;5;'));//false
console.log(regex.test('3;5'));//true
console.log(regex.test(';3;5;6'));//false
console.log(regex.test('3;5;6;'));//false
console.log(regex.test('3;56;6;'));//false

运行结果:

㈡ 请问JAVA中正则表达式匹配怎么实现的!

Java中正则表达式匹配的语法规则:

packageorg.luosijin.test;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;

/**
*正则表达式
*@versionV5.0
*@authorAdmin
*@date2015-7-25
*/
publicclassRegex{

/**
*@paramargs
*@authorAdmin
*@date2015-7-25
*/

publicstaticvoidmain(String[]args){
Patternpattern=Pattern.compile("b*g");
Matchermatcher=pattern.matcher("bbg");
System.out.println(matcher.matches());
System.out.println(pattern.matches("b*g","bbg"));
//验证邮政编码
System.out.println(pattern.matches("[0-9]{6}","200038"));
System.out.println(pattern.matches("//d{6}","200038"));
//验证电话号码
System.out.println(pattern.matches("[0-9]{3,4}//-?[0-9]+","02178989799"));
getDate("Nov10,2009");
charReplace();
//验证身份证:判断一个字符串是不是身份证号码,即是否是15或18位数字。
System.out.println(pattern.matches("^//d{15}|//d{18}$","123456789009876"));
getString("D:/dir1/test.txt");
getChinese("welcometochina,江西奉新,welcome,你!");
validateEmail("[email protected]");
}
/**
*日期提取:提取出月份来
*@paramstr
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidgetDate(Stringstr){
StringregEx="([a-zA-Z]+)|//s+[0-9]{1,2},//s*[0-9]{4}";
Patternpattern=Pattern.compile(regEx);
Matchermatcher=pattern.matcher(str);
if(!matcher.find()){
System.out.println("日期格式错误!");
return;
}
System.out.println(matcher.group(1));//分组的索引值是从1开始的,所以取第一个分组的方法是m.group(1)而不是m.group(0)。
}
/**
*字符替换:本实例为将一个字符串中所有包含一个或多个连续的“a”的地方都替换成“A”。
*
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidcharReplace(){
Stringregex="a+";
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher("okaaaaLetmeAseeaaaaabooa");
Strings=matcher.replaceAll("A");
System.out.println(s);
}
/**
*字符串提取
*@paramstr
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidgetString(Stringstr){
Stringregex=".+/(.+)$";
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(str);
if(!matcher.find()){
System.out.println("文件路径格式不正确!");
return;
}
System.out.println(matcher.group(1));
}
/**
*中文提取
*@paramstr
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidgetChinese(Stringstr){
Stringregex="[//u4E00-//u9FFF]+";//[//u4E00-//u9FFF]为汉字
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(str);
StringBuffersb=newStringBuffer();
while(matcher.find()){
sb.append(matcher.group());
}
System.out.println(sb);
}
/**
*验证Email
*@paramemail
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidvalidateEmail(Stringemail){
Stringregex="[0-9a-zA-Z]+@[0-9a-zA-Z]+//.[0-9a-zA-Z]+";
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(email);
if(matcher.matches()){
System.out.println("这是合法的Email");
}else{
System.out.println("这是非法的Email");
}
}
}

㈢ java正则表达式 如何匹配 | 或者是如何替换 |

"1|2".replaceAll("\\|","a");

浏览器里面快速验证:
javascript:alert("1|2".replace(/\|/,"a"));

㈣ java 正则表达式怎样用 逻辑运算符啊 ! && ||

今天使用正则表达式是遇到一个问题, 磨了半天, 发现犯了个低级错误, 因此记录下来加深印象
问题描述:
我需要把 ^drawable(-[a-zA-Z0-9]+)*$ 和 ^mipmap(-[a-zA-Z0-9]+)*$ 这两个正则表达式用或的关系连接起来

我尝试了一下方法都未成功!!
Pattern.compile("^drawable(-[a-zA-Z0-9]+)*$ | ^mipmap(-[a-zA-Z0-9]+)*$")

Pattern.compile("(^drawable(-[a-zA-Z0-9]+)*$) | (^mipmap(-[a-zA-Z0-9]+)*$)")

Pattern.compile("^drawable(-[a-zA-Z0-9]+)* | mipmap(-[a-zA-Z0-9]+)*$")

Pattern.compile("^(drawable | mipmap)(-[a-zA-Z0-9]+)*$")

源码如下:

import java.util.regex.Pattern;

public class MyClass {
public static Pattern VALID_FOLDER_PATTERN = Pattern.compile("^drawable(-[a-zA-Z0-9]+)*$ | ^mipmap(-[a-zA-Z0-9]+)*$");
//public static Pattern VALID_FOLDER_PATTERN = Pattern.compile("(^drawable(-[a-zA-Z0-9]+)*$) | (^mipmap(-[a-zA-Z0-9]+)*$)");
//public static Pattern VALID_FOLDER_PATTERN = Pattern.compile("^drawable(-[a-zA-Z0-9]+)* | mipmap(-[a-zA-Z0-9]+)*$");
//public static Pattern VALID_FOLDER_PATTERN = Pattern.compile("^(drawable | mipmap)(-[a-zA-Z0-9]+)*$");

public static void main(String[] args) {
if(VALID_FOLDER_PATTERN.matcher("drawable-xhdpi").matches()) {
System.out.println("match");
} else {
System.out.println("no match");
}
if(VALID_FOLDER_PATTERN.matcher("mipmap-xhdpi").matches()) {
System.out.println("match");
} else {
System.out.println("no match");
}
}
}

纠结了半天发现自己画蛇添足地把逻辑符号或(|) 的左右添加了一个空格(可能是写代码习惯了-_-!!)
去掉作用两边的空格, 其实上面四个正则表达式都是正确的

总结: 在用逻辑符或连接正则表达式时, 千万不要为了好看而在左右添加空格!! (其他符号也是一样! 如^、$、*、.........不一而足...)

㈤ java正则表达式匹配

java里的正则表达式默认只匹配一行
若要支持匹配换行符,在建Pattern时使用两个参数的那个方法,加上参数Pattern.DOTALL
Pattern p = Pattern.compile("\\d+.{1,2}\\d{2}:\\d{2};\\d{2},\\d{3}",Pattern.DOTALL);

㈥ java正则表达式匹配模式

不需要完全匹配的正则表达式,用m1.find()函数就可以模糊匹配,完整的程序如内下:

importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassG{
publicstaticvoidmain(String[]args){
Stringreg="\d{3}\s+\d{5}\s+\d{3}\s+\d{2}";
Patternp1=Pattern.compile(reg);
Stringu="CQGM021R1581121384600041739-1in-service";
Matcherm1=p1.matcher(u);
while(m1.find()){
System.out.println(m1.group());
}
}
}

运行结容果:

581 12138 460 00

㈦ 怎么用java写一个正则表达式去匹配包含一个或多个“*”的字符串

Pattern pattern = Pattern.compile("^[^\\*]*\\*+.*$");
Matcher matcher = pattern.matcher(你要匹配的字符串);
if(matcher.matches())
{
//TODO:匹配
}
else
{
//TODO:不匹配
}

上面的代码应该可以满足你的要求,不过你要判断版是否包含一权个*。为什么不直接用contains("*") 或者 indexOf("*") > 0 呢?呵呵,希望对你有所帮助。