[英]How can I check if the user input is a word and not a special character like (*!?)?
我有以下代码(Option1):
if(!firstName.getText().toString().matches("/w+/")){
error = error + getString(R.string.error_first_name_incorrect_resgister_activity) +"\n";
而且我有此代码(Option2)没有执行预期的操作(允许用户仅插入那些字符)
if(!lastName.getText().toString().matches("/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.\'-]+$/u")){
error = error + getString(R.string.error_last_name_incorrect_resgister_activity) +"\n";
您可以使用模式(?ui)\\w+
与unicode符号匹配
Pattern p = Pattern.compile("[^a-z0-9 ]", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(your_text_string);
boolean b = m.find();
if (b) {
// error occurred special chars
}
首先,如Null所建议,您可以只检查字符串长度。 像这样:
if(firstName.getText().toString().length < 5){
error = error + getString(R.string.error_first_name_incorrect_resgister_activity)
或者您也可以修改您的正则表达式,以便用户必须使用量词( {5,}
)至少输入5个字母。 然后您的代码将如下所示:
if(!lastName.getText().toString().matches(/\w{5,}/u)){
error = error + getString(R.string.error_last_name_incorrect_resgister_activity) +"\n";
要么
if(!lastName.getText().toString().matches(/^[a-zA-Z\-_ ’'‘ÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ]$/)){
error = error + getString(R.string.error_last_name_incorrect_resgister_activity) +"\n";
我建议使用Character.isLetter(c)
如下:
char[] charArray= lastName.getText().toCharArray();
for(Character c :charArray ){
if(!Character.isLetter(c)){
error = error + getString(R.string.error_last_name_incorrect_resgister_activity) +"\n";
break;
}
}
测试:
char c1= '-';
char c2= 'A';
char c3= 'ę';
char c4= 'ð';
char c5= 'ã';
boolean flag1 =Character.isLetter(c1);
boolean flag2 =Character.isLetter(c2);
boolean flag3 =Character.isLetter(c3);
boolean flag4 =Character.isLetter(c4);
boolean flag5 =Character.isLetter(c5);
System.out.println(flag1);
System.out.println(flag2);
System.out.println(flag3);
System.out.println(flag4);
System.out.println(flag5);
结果:
false
true
true
true
true
编辑:
另外,如果您需要将数字视为有效字符(不是特殊字符),则需要使用Character.isDigit(c)
:
if(!Character.isLetter(c) && !Character.isDigit(c))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.