正则表达式不应该允许任何特殊字符,除了,

时间:2017-07-11 09:12:52

标签: javascript jquery

我正在尝试创建一个正则表达式,除了,.之外不允许任何特殊字符,它们不应该并排。

例如:应接受STax.sdn,skm,而SDs,.Hnj应抛出错误消息。我使用了以下代码,但它并排接受,.并不是我想要的。

function validateAnnouncementTags(){
  var announcementTags = document.getElementById("announcementTags").value;
  if (announcementTags.search(/[<>'+\"\/`\\\[\]^={}%;@#!$&*()?:|]/)>-1 ) {
    $('#announcementTagsSpecialCharError').addClass('show');
  } else {
    $('#announcementTagsSpecialCharError').addClass('hide');
    $('#announcementTagsSpecialCharError').removeClass('show');
  }
}

2 个答案:

答案 0 :(得分:1)

使用此模式:

/^(?!.*[\.,])/

答案 1 :(得分:0)

根据您的评论,我假设您要接受以句号或逗号分隔的任何字母。我们怎么样:

  1. 检查有效字符,
  2. 确保没有&#34;特殊&#34; chars发生在邻近?
  3. 我们可以使用

    function validateAnnouncementTags() {
       var announcementTags=document.getElementById("announcementTags").value;
    
       if (announcementTags.match(/[a-zA-Z\.,]*/)[0] != annoucementTags
           || announcementTags.search(/[\.,][\.,]/) >= 0 
          ) {
          $('#announcementTagsSpecialCharError').addClass('show');
       } else {
          $('#announcementTagsSpecialCharError').addClass('hide');
          $('#announcementTagsSpecialCharError').removeClass('show');
       }
    }
    

    但是,如果我可以大胆地假设更多的结构符合您可接受的语法:

    1. 接受以逗号或句号分隔的任何字母序列
    2. 序列不会以逗号或句号开头
    3. 序列可以逗号或句号结尾
    4. 然后我们可以使用:

      function validateAnnouncementTags() {
         var announcementTags=document.getElementById("announcementTags").value;
      
         if (announcementTags.match(/([a-z0-9]+[\.,]?)*/)[0] != annoucementTags ) {
            $('#announcementTagsSpecialCharError').addClass('show');
         } else {
            $('#announcementTagsSpecialCharError').addClass('hide');
            $('#announcementTagsSpecialCharError').removeClass('show');
         }
      }