簡體   English   中英

Javascript / Regex:Expression在一個環境中工作,而不是在另一個環境中工作

[英]Javascript/Regex: Expression works in one environment and not another

我試圖只允許字母數字輸入或這些字符:'() - _。 (包括“。”)

使用regexpal.com我輸入了這個正則表達式: [^a-zA-Z0-9()\\.'\\-\\_ ]

它正確識別*和@作為匹配。 令人費解的是,我在.aspx頁面上的javascript中有相同的表達,並且它沒有捕獲*或@。 我已經確認確實正在進入該函數並且表達式會進行評估。 這是代碼:

  $(".validateText").keyup(function (e) {
          var matchPattern = "[^a-zA-Z0-9()\.'\-\_ ]";
          var regEx = new RegExp(matchPattern);
          console.log("Regex: " + regEx + "\nValue of " + e.target.id + " is: " + e.target.value);
          if (regEx.test(e.target.value)) {
              console.log("Found invalid data.");//I don't get here with @ or *
              var failingChar = e.target.value.length - 1;
              e.target.value = e.target.value.substring(0, failingChar);
          }

  });

使用正則表達式文字而不是使用字符串文字來定義正則表達式。

var regEx = /[^a-zA-Z0-9()\.'\-\_ ]/;

字符串文字將反斜杠解釋為轉義字符,因此需要對其進行轉義。 正則表達式文字不要求這樣。

按照Bergi的建議,你甚至不需要逃避所有這些角色。

/[^a-zA-Z0-9().'_ -]/

你甚至可以使用普通的\\w字符。

/[^\w().' -]/
var matchPattern = "[^a-zA-Z0-9()\\.'\\-\\_ ]";

會工作。

暫無
暫無

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

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