//是否合法的手机号号码
function mobile(s) {
var regex = /^((\(\d{2,3}\))|(\d{3}\-))?1\d{10}$/;
if (!regex.exec(s)) {
return false
}
return true
}
解决方案 »
- 开个帖子,分享我的博客,java程序员从笨鸟到菜鸟系列博客,每天持续更新,更新马上通知本帖!!!
- 在freemarker中怎么做出当鼠标移到那一级菜单时,显示下拉的二级菜单呢?
- Eclipse、JBoss、SQL2005 开发EJB3.0 但连接不上数据库请高手指点
- 急求个人用struct编写的个人网上银行系统代码
- J2EE如何来学?
- Spring和Struts集成的问题
- 求助啊:我在WEB.xml中配置的servlet需要传配置文件的相对路径,老是出错啊?
- [转]用web.xml控制Web应用的行为
- 一个关于java中socket的问题
- 关于输入日期校验的问题
- java合成MP3
- JPA操作,往表里面插入一条数据怎么让他马上返回主键?
•学会使用Parttern和Matcher类
•String类对正则表达式的支持
正则表达式是在JDK1.4之后才加入到java中,如果在1.4之前java中想要使用正则表达式的话,就必须要去apache的网站上下载一个正则表达式的开发包, 正则表达式最早是在PHP使用并得到广泛的好评,主要的功能是进行一些复杂字符串的校验。正则的规则基本上在每一门语言中都可以使用。
例子:使用普通的方式去验证一串字符串是否全部为数组
package com.wanczy.regex;public class RegexDemo01 {
public static void main(String[] args) {
String s = "13423a42565467568";
char c[] = s.toCharArray();
boolean bool = true;
for (int i = 0; i < c.length; i++) {
if(!(c[i]>='0' && c[i]<='9')){//只要有一个元素不再0-9之间吗,那么我们说字符串不是全部由数字组成
bool = false;
break;
}
}
if(bool){
System.out.println("字符串全部由数字组成");
}else{
System.out.println("字符串不全部由数字组成");
}
}
}使用正则:
package com.wanczy.regex;public class RegexDemo02 {
public static void main(String[] args) {
String s = "1342342565467568";
if(s.matches("\\d+")){
System.out.println("字符串全部由数字组成");
}else{
System.out.println("字符串不全部由数字组成");
}
}
}
正则表达式:
Pattern 类,列出了全部的正则表达式的内容
主要的正则内容:
•字符匹配:
编号 正则内容 描述
1 [abc] 表示取值可能是a或b或c
2 [^abc] 表示取值不可能是a或b或c
3 [a-zA-Z] 表示全部由字母组成,大小写都可以
•简短表达式
编号 正则内容 描述
1 \d 表示由数字组成
2 \D 表示由非数字组成
3 \s 表示由空格组成\n \t
4 \S 表示由非空格组成
5 \w 表示由数字字母下划线组成
6 \W 表示由非数字字母下划线组成
•列出出现次数的表达式
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
手机号码的验证:
package com.wanczy.regex;public class RegexDemo3 {
public static void main(String[] args) {
String s = "12515967537";
if(s.matches("1(3|4|5|8)\\d{9}")){
System.out.println("是手机号码");
}else{
System.out.println("不是手机号码");
}
}
}
Pattern类:是正则操作最重要的一个类,所有的正则规范都需要在Pattern类进行规定。
Matcher类:进行正则匹配
•取得Pattern的实例:public static Pattern compile(String regex)
•取得Matcher类的实例:public Matcher matcher(CharSequence input)
•进行字符串拆分:public String[] split(CharSequence input)
•进行字符串的替换:public String replaceAll(String replacement)
范例1:进行字符串的校验
package com.wanczy.regex;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexDemo4 {
public static void main(String[] args) {
String s = "13515967537";
Pattern p = Pattern.compile("1(3|4|5|8)\\d{9}");//定义规则
Matcher m = p.matcher(s);//s需要匹配的字符串
if(m.matches()){
System.out.println("是手机号码");
}else{
System.out.println("不是手机号码");
}
}
}
范例2:字符串拆分“abc123qwe9008sdf109werqwer220mmnnhni12580uh”
package com.wanczy.regex;import java.util.regex.Pattern;public class RegexDemo5 {
public static void main(String[] args) {
String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";
Pattern p = Pattern.compile("\\d+");//定义规则
String str[] = p.split(s);//进行拆分
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
}
}
范例3:进行字符串的替换
package com.wanczy.regex;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexDemo06 {
public static void main(String[] args) {
String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";
Pattern p = Pattern.compile("\\d+");//定义规则
Matcher m = p.matcher(s);//s需要匹配的字符串
s = m.replaceAll("中国您好");
System.out.println(s);
}
}Pattern:主要用于定义正则规范,并进行字符串拆分
Matcher:主要作用是用于正则的校验,并进行字符串的替换String类对正则的支持:java在JDK1.4之后加入了正则表达式,随后更新了String类的操作,而使得某些操作不需要对Pattern和Matcher类进行实例化,使用String类的方法就可以了。
•public boolean matches(String regex):进行正则的匹配
•public String replaceAll(String regex, String replacement):根据规定的正则进行替换
•public String replaceFirst(String regex, String replacement):根据正则替换第一个匹配正则的字符串
•public String[] split(String regex):根据规定的正则进行字符串的分割
范例:替换
package com.wanczy.regex;
public class RegexDemo07 {
public static void main(String[] args) {
String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";
s = s.replaceAll("\\d+", "中国您好");
System.out.println(s);
}
}范例:替换第一个匹配正则的字符串
package com.wanczy.regex;
public class RegexDemo07 {
public static void main(String[] args) {
String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";
s = s.replaceFirst("\\d+", "中国您好");
System.out.println(s);
}
}范例:进行字符串分割
package com.wanczy.regex;
public class RegexDemo07 {
public static void main(String[] args) {
String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";
String str[] = s.split("\\d+");//进行拆分
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
}
}