簡體   English   中英

正則表達式,除,,

[英]Regex which should not allow any special characters except ,

我正在嘗試創建一個正則表達式,該表達式除,之外不允許任何特殊字符. 他們不應該並排。

例如:應該接受STax.sdn,skmSDs,.Hnj應該拋出錯誤消息。 我已用下面的代碼,然而,接受,. 並排,我不想。

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

使用此模式:

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

根據您的評論,我假設您想接受任何以句點或逗號分隔的字母。 我們呢:

  1. 檢查有效字符,並
  2. 確保沒有相鄰的“特殊”字符?

我們可以用

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. 序列可以以逗號或句號結尾

然后我們可以使用:

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');
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM