在osx上使用javascript中的正则表达式检测重音

时间:2016-03-15 14:13:30

标签: javascript regex macos

我需要一些帮助,因为我在检测突出字符方面遇到了麻烦。

我有一个在PC和MAC上运行的应用程序(html,css,js)。 它包含一些具有以下属性的输入字段:

  • 文字必须是数字
  • 它必须只包含8个字符(所以8个数字)
  • 立即验证每个输入

由于HTML输入必须包含特定数量的字符,因此我无法使用type="number",因此其格式为:<input type="tel" maxlength="8"

我的js功能如下:

onChangeUserId: function (e) {
  var theEvent = e.view.event;
  var key = theEvent.keyCode || theEvent.which;
  keyValue = String.fromCharCode(key);
  var regex = /[0-9]{1,8}/;
  if (key === 13) {
    // validation function
  } else if (!regex.test(keyValue)) {
    theEvent.returnValue = false;
    if (theEvent.preventDefault) theEvent.preventDefault();
  }
},

我的问题是这是在Windows上运行,但OSx似乎允许以下字符(都是重音符号):^¨`

我没有制作这个代码,我“只是”必须实际修复这个bug,所以也许我错过了一些东西?但是我已经在互联网上寻找了一个漫长的时间,尝试了很多东西(特别是在正则表达式上,但这部分似乎最终还是很好)并且无法找到我为什么遇到这个问题以及如何解决它:/

如果你们中的一些人有答案,我会很高兴听到它(我现在很绝望é_è)

谢谢:)

修改

正如vove建议的那样here,我跟着这个堆栈link,它引导我进入这个JSFiddle Demo。这个演示适用于我的电脑,但是使用我的mac,它允许字符^¨`,所以即使这个例子也不适用于我:/
还有其他人有问题吗?

3 个答案:

答案 0 :(得分:1)

我前一段时间停止尝试解决我的问题,但是从我记得的部分原因是我的代码使用了“onKeyPressed”函数但是当按下这些键时没有调用,也没有“onKeyUp”顺便说一下。 所以我不得不使用“onKeyDown”函数来检测按下这些特定键的时间。

我认为这个问题可能会让其他人感兴趣。

答案 1 :(得分:0)

您需要使用$和^

标记正则表达式中字符串的开头和结尾

你的正则表达式应该是

/^[0-9]{1,8}$/

实施例

/^[0-9]{1,8}$/.test("33333333") //returns true

/^[0-9]{1,8}$/.test("333333333") //returns false

此外,您需要测试整个输入值,因此请将 if替换为

else if (!regex.test(this.value)) {
  theEvent.returnValue = false;
  if (theEvent.preventDefault) theEvent.preventDefault();
}

答案 2 :(得分:0)

您可以将maxlength属性设置为8;如果pattern RegExp与八位数不匹配,\d{8} form属性会input value阻止input提交包含if条件的RegExp条件,/\D/ RegExp.prototype.test()利用""检查输入是否包含不是数字的字符;如果值不是数字

,则将值设置为空字符串document.querySelector("input[type=tel]") .addEventListener("input", function() { if (/\D/.test(this.value)) { this.value = ""; alert("eight numbers required") } })

&#13;
&#13;
<form>
  <input type="tel" pattern="\d{8}" maxlength="8" placeholder="input eight numbers" required />
  <input type="submit" />
</form>
&#13;
List<KeyValuePair<int, int>>()

Dictionary<int,int>();
&#13;
&#13;
&#13;