【问题标题】:find mismatch character in the string with regular expression用正则表达式在字符串中查找不匹配的字符
【发布时间】:2015-03-17 10:58:39
【问题描述】:

当文本输入/粘贴文本时,我必须在文本区域中找到并向用户显示除键盘字符之外的任何特殊字符,下面我解释了我要做什么!请尽快帮助我?

if ($(txtMessage).val().trim() != "") {
         var pattern = "^[a-zA-Z0-9~`!@#$%^&*()_+-={}|:;<>,.?\/']+$";
         for(var i=0;i<$(txtMessage).val().length;i++){
             var subStr=$(txtMessage).val().substring(0, i);
             if(!subStr.match(pattern)){
                 $('#customDailogBox')
                    .text(
                            "You have entered or paste "+subStr.substring(i, i)+"input  characters are not supported characters!!!..");
             }
         }

【问题讨论】:

  • 注意,根据您的要求,特殊字符还可以包括 ü,ã,ê,ç,à,é,º,ª 等
  • 附注:确保要匹配的- 字符位于组的末尾,否则您将检查+= 之间的任何字符
  • 您遇到了什么问题?

标签: javascript regex validation


【解决方案1】:

改变你的循环条件和子字符串函数

 for(var i=1;i=<$(txtMessage).val().length;i++){
         var subStr=$(txtMessage).val().substr(i,1);
         if(!subStr.match(pattern)){
             $('#customDailogBox').text("You have entered or paste "+subStr.substring(i, i)+"input  characters are not supported characters!!!..");
         }
}

或者你也可以使用正则表达式匹配整个字符串一次

var unmatched_characters = $(txtMessage).val().match(/[^a-zA-Z0-9~`!@#$%^&*()_+-={}|:;<>,.?\/']/g);
if (unmatched_characters.length>0){
     $('#customDailogBox').text("You have entered or paste some characters that are not supported !!!..");
}

【讨论】:

  • 通常,应该构造正则表达式,以便它可以应用于整个字符串,而不仅仅是单个字符。
  • @neuhaus 感谢提醒;我已经更新了答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 2018-07-16
相关资源
最近更新 更多