我想检查一个字符串是否仅包含:
- 字母
- 数字
- 下划线
- 句号
在Flutter中, 我尝试了以下代码来只获取字母, 但是即使其他字符存在,它也返回true如果字符串包含一个字母:
String mainString = "abc123";
print(mainString.contains(new RegExp(r'[a-z]')));
就像我所说的,它返回true
因为包含字母,但我想知道它是否仅包含字母。
是否有一种方法可以做到这一点?
我想检查一个字符串是否仅包含:
在Flutter中, 我尝试了以下代码来只获取字母, 但是即使其他字符存在,它也返回true如果字符串包含一个字母:
String mainString = "abc123";
print(mainString.contains(new RegExp(r'[a-z]')));
就像我所说的,它返回true
因为包含字母,但我想知道它是否仅包含字母。
是否有一种方法可以做到这一点?
RegExp
的问题在于,它允许匹配子字符串,并且只匹配单个字符。您可以使用 ^
和 $
强制要求整个字符串匹配,您可以使用 +
对表达式中的一个或多个进行匹配:print(RegExp(r'^[a-z]+$').hasMatch(mainString));
要匹配您提到的所有字符:
print(RegExp(r'^[A-Za-z0-9_.]+$').hasMatch(mainString));
实现这个的基本方法如下:
// for example
List<String> validChar = ["1", "2", "3", "t"];
// given text
String x = "t5";
bool valid = true;
for(int i=0; i<x.length; i++){
if(!validChar.contains(x[i])){
valid = false;
}
}
print(valid);
只需要根据您的需求更改x
和validChar
即可。