^
表示匹配输入字符串的开始位置。
例如,正则表达式 ^hello
只会匹配以 hello
开头的字符串,像 hello buka
能匹配,而 buka hello
则不能匹配。
^ :以哪个元字符作为开始;
/^a/ 匹配以a字符作为开头的字符串
/^abc/ 以abc字符串为开头
/^\d/ 以数字作为开头
$
表示匹配输入字符串的结束位置。
$ :以哪个元字符作为结束。
比如,正则表达式 world$
只会匹配以 world
结尾的字符串,hello buka 能匹配,而
buka hello` 就不能匹配。
/abc$/ 以abc作为结束
/\d$/ 以数字作为结束
当 ^ 和 $ 同时出现时,表示只能匹配 ^ 和 $ 之间的内容
/^abc$/ //只能匹配'abc'
/^a.c$/ //可以匹配a加任意单个字符加c,比如abc,aec,acc,a2c等
^(hello).*$ //这个表达式会匹配以 hello 开头的整个字符串,并将 hello 部分捕获到一个分组中
^.*$ //在单行模式下,它匹配整个输入字符串,因为 .* 表示匹配任意字符零次或多次,而 ^ 和 $ 分别限定了起始和结束位置。
注意:abcabc这种形式不行。
位置锚定:确定匹配字符出现的位置
字符 | 含义 |
---|---|
^ | 行首锚定,用于模式的最左侧 |
$ | 行尾锚定,用于模式的最左右侧 |
\ <pattern | 以对应匹配为词首的单词 |
pattern\ > | 以对应匹配为词尾的单词 |
\ b | 表示单词的边界,既可以表示单词的词首,也可以表示单词的词尾 |
例子:
Scanner sc = new Scanner(System.in);
String dhhm = "^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$";
System.out.println("请输入电话号码: ");
String b = sc.next();
System.out.println(b.matches(dhhm));
/ ^ :表示匹配字符串的开始位置。
(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9]) :这是一个分组,表示手机号码的前三位可以是以下几种情况之一:
13[0-9] :表示以 13 开头,第三位可以是 0 到 9 中的任意数字。
14[5|7] :表示以 145 或 147 开头。
15[0|1|2|3|5|6|7|8|9] :表示以 15 开头,第三位可以是 0、1、2、3、5、6、7、8、9 中的任意数字。
18[0|1|2|3|5|6|7|8|9] :表示以 18 开头,第三位可以是 0、1、2、3、5、6、7、8、9 中的任意数字。
\\d{8} :\\d 表示匹配一个数字,{8} 表示前面的数字重复 8 次,即表示后面跟 8 位数字。
$ :表示匹配字符串的结束位置。