【问题标题】:regex for alphanumeric with parentheses ()带括号 () 的字母数字的正则表达式
【发布时间】:2011-12-07 12:44:44
【问题描述】:

我有一个 6 到 255 长度的字母数字的 jQuery 正则表达式,我想检查括号“()”和其他字符,如下划线、逗号、连字符,

/^[A-Za-z0-9,., ,_,-,\(\)]{6,255}$/

但它在括号方面有问题,并且它也接受在安全性方面不好的脚本值

正如我在下面的评论中更好地解释的那样,一些字符串是可以的:

ABCDEF
ABCDEFG
abcdef
0123456789
a.b.c.d.e
., _-()

一些不正确的字符串

ABC
ABCDEF(
Abcdef(ghi
abcde)fgh

(最后两个不行,因为括号不匹配)

【问题讨论】:

  • 您可以添加它接受但您不希望它接受的字符串示例吗?
  • jQuery 正则表达式。什么?它是什么检查?检查是否存在,只有这些字符存在或...?
  • @AndrewD。 dot 只能在 [] 之外转义,不能在内部转义。
  • 字符串的示例包括:nida_ali 正在开始一项名为 NV(服装)的新业务。这只是一个例子,显示在这里。

标签: javascript jquery regex alphanumeric


【解决方案1】:
/(?=^([^()]*\([^()]*\))*[^()]*$)^[A-Za-z0-9,. _()-]{6,255}$/;

您检查了太多次 , 并且 - 必须是最后一个字符或被转义 (\-),否则它被用作范围 (A-Z)

我添加了一个预检查来测试所有( 都有一个) 并且所有) 都有一个(。它不适用于(())(两级括号)

在这里测试:http://jsbin.com/epiroh/8/edithttp://gskinner.com/RegExr/?2uuab

【讨论】:

  • 如果我错了,请纠正我,但您也可以转义 - 字符(如 /^\-$/
  • @cambraca “或被转义”(我现在添加了一个示例来说明我的意思)并且您只需要在 [...] 内部转义 -,而不是在外面。
  • 你不必在字符类中转义()
  • @cambraca: - 只是在[] 内部有特殊含义。
  • [链接] (regexr.com?2uu9p) 不起作用 :( 加上它是反馈文本区域的正则表达式,所以我认为反馈应该支持这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-12
  • 1970-01-01
  • 1970-01-01
  • 2020-07-02
  • 2011-09-16
  • 1970-01-01
相关资源
最近更新 更多