【问题标题】:regular expression with limited special characters in jquery [closed]jquery中具有有限特殊字符的正则表达式[关闭]
【发布时间】:2014-01-16 14:46:57
【问题描述】:

我想要所有字母数字数据 + 只允许以下 4 个特殊字符。

' (single quote)
- (hyphen)
. (dot)
 single space

我试过这个:

var userinput = $(this).val();
var pattern = [A-Za-z0-9_~\-!@#\$%\^&\*\(\)]+$

if(!pattern.test(userinput))
{
  alert('not a valid');
}​

但它不起作用。

【问题讨论】:

  • 在什么情况下它不起作用?我希望得到的答案在“它不应该匹配输入 X”到“我的计算机在我运行它时试图杀死我”的范围内。
  • 您的正则表达式对象 (pattern) 的语法是错误的,模式本身也是如此 - 如果您只想要四个特殊字符,为什么还要在其中包含大量额外的字符?
  • 您的正则表达式明确允许 _, ~, !, @, #, $, %, ^@2, @98765333 ,() 但根据我理解他们不应该匹配的问题......你只是从某个地方复制粘贴那个正则表达式吗?还是您的问题缺少一些细节?

标签: javascript jquery html regex validation


【解决方案1】:

首先,您需要将字符串包含在/ 中以将其解释为正则表达式:

var pattern = /[A-Za-z0-9_~\-!@#\$%\^&\*\(\)]+$/;

然后,您必须删除一些不允许的字符(该正则表达式匹配的比您指定的要多):

var pattern = /^[A-Za-z0-9 '.-]+$/;

第二个是你需要的。完整代码:

var userinput = $(this).val();
var pattern = /^[A-Za-z0-9 '.-]+$/;

if(!pattern.test(userinput))
{
  alert('not a valid');
}​

此外,检查this 指向的内容。

【讨论】:

  • 你需要转义那个.
  • @RGraham . 不需要在字符类中转义。 /[.]/.test('some string') // false
  • @Vache 这是仅限 JS 的事情,还是适用于任何 Regex 实现?
  • @RGraham 它适用于任何实现:因为 [] 范围只能包含文字,所以转义是多余的(每个符号都被解释为文字)。
【解决方案2】:

“不工作”对您的问题没有帮助。

我建议这个正则表达式:

^[a-zA-Z0-9\'\-\. ]+$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 2012-10-03
    • 2022-11-16
    • 2021-09-18
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    相关资源
    最近更新 更多