工具简介
到底什么是正则表达式?
在编写处理字符串的程序或网页时,经常有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
常用元字符
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
常用限定符
代码/语法 | 说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
常用反义词
代码/语法 | 说明 |
---|---|
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
/**
* 检查匹配包含中文英文数字-正则表达式
* //表达式-匹配非中文英文数字的字符替换成空字符:regExStr = "[^\\u4E00-\\u9FA5A-Za-z0-9]";
* @param strs
* @return
*/
public static String containsChineseNumLetterStr(String strs) {
String regExStr;
regExStr = "[^\\u4E00-\\u9FA5A-Za-z0-9]";
Pattern pat = Pattern.compile(regExStr);
Matcher matcher = pat.matcher(strs);
return matcher.replaceAll("").trim();
}
Android中EditText监听只允许汉字输入:注意这个在方括号中的^表示非
//通过正则方法限制
//此方法:非汉字的字符全部替换成空字符串
public static String (String str) throws PatternSyntaxException {
//只允许输入汉字:^表示非
String regEx = "[^\u4E00-\u9FA5]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
}
et.addTextChangedListener(new TextWatcher() {
String str;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String strs=et.getText().toString();
str = allowChinese(strs.toString());
if (!strs.equals(str)) {
et.setText(str);
et.setSelection(str.length());
}
}
@Override
public void afterTextChanged(Editable editable) {}
});