我定义了一个正则表达式来检查字符串是否仅包含字母字符且长度为 5:
use regex::Regex;
fn main() {
let re = Regex::new("[a-zA-Z]{5}").unwrap();
println!("{}", re.is_match("this-shouldn't-return-true@"));
}
Run Code Online (Sandbox Code Playgroud)
我使用的文本包含许多非法字符,并且长度超过 5 个字符,那么为什么会返回 true?
您必须将其放入其中^...$以匹配整个字符串而不仅仅是部分:
use regex::Regex;
fn main() {
let re = Regex::new("^[a-zA-Z]{5}$").unwrap();
println!("{}", re.is_match("this-shouldn't-return-true@"));
}
Run Code Online (Sandbox Code Playgroud)
游乐场。
正如文档中所解释的:
^注意和锚点的使用$。在此板条箱中,每个表达式都在开头和结尾处隐式执行.*?,这使得它可以匹配文本中的任何位置。锚点可用于确保全文与表达式匹配。