我需要一个正则表达式模式,它只接受输入字段的逗号分隔值。
例如:abc,xyz,pqr
。
它应拒绝以下值:,
,sample
text1,text2,
我还需要接受以分号分隔的值。任何人都可以为此建议正则表达式吗?
答案 0 :(得分:8)
最简单的形式:
^\w+(,\w+)*$
我只需限制字母。我怎么能这样做?
使用正则表达式(包括示例unicode字符范围):
^[\u0400-\u04FFa-zA-Z ]+(,[\u0400-\u04FFa-zA-Z ]+)*$
使用示例:
public static void main (String[] args) throws java.lang.Exception
{
String regex = "^[\u0400-\u04FFa-zA-Z ]+(,[\u0400-\u04FFa-zA-Z ]+)*$";
System.out.println("abc,xyz,pqr".matches(regex)); // true
System.out.println("text1,text2,".matches(regex)); // false
System.out.println("ЕЖЗ,ИЙК".matches(regex)); // true
}
答案 1 :(得分:2)
答案 2 :(得分:1)
尝试下一个:
^[^,]+(,[^,]+)*$
您可以在单词和Unicode文本之间添加空格,例如:
word1 word2,áéíóú áéíúó,ñ,word3
答案 3 :(得分:1)
最简单的正则表达式是:
^\w+(,\w+)*$
这是一种方法:
public static boolean isCsv(String csv) {
return csv.matches("\\w+(,\\w+)*");
}
请注意String.matches()
不需要开头或结尾正则表达式(^和$);它们隐含在此方法中,因为整个输入必须匹配才能返回true。
答案 4 :(得分:0)
我想你想要这个,基于你的评论只想要字母(我假设你的意思是字母)
^[A-Za-z]+(,[A-Za-z]+)*$