【问题标题】:Regular Expression for valid css and/or jQuery selector有效 css 和/或 jQuery 选择器的正则表达式
【发布时间】:2011-05-10 16:10:37
【问题描述】:

我需要这样的东西:

Regex validSelector = new Regex("^[.#a-zA-Z0-9_:[] ]+[,><a-zA-Z0-9_~=\"\":[] ]*$");

有人写过正则表达式来验证 jQuery 或 CSS 选择器吗? (CSS3/jQuery1.4)

或者,有人知道我在哪里可以找到用于验证 jQuery 选择器的正则表达式或正则表达式生成器吗?(或至少 CSS 选择器?)

我尝试过查看sizzle.js bu John Resig 的代码和 css 的 w3c 文档 (http://www.w3.org/Style/CSS/),但结果头疼:(

我想问问你们中是否有人已经为此编写或使用过一些 sn-p。

谢谢!!

【问题讨论】:

  • 从技术上讲,我不认为有任何无效的选择器,只是有些没有选择任何东西。无论如何,诸如大括号匹配和处理不同上下文(正常、方括号内、引号内)之类的任务对正则表达式非常不友好,通常使用某种解析器来完成。
  • @Jonathan:从他的代码 sn-p,我猜他想用 C# 来做这个。
  • @T.J. sn-p 看起来有些通用,但是是的,您可能是对的
  • @Jonathan:嗯,那个加上标签。 ;-)
  • @Jonathan Day:抱歉,我说的不是很清楚,我说的是 jQuery 选择器,而不是 CSS。 .123 是一个 jQuery 选择器,它选择(无效)类 123(在您选择的浏览器中尝试,它确实有效)。这是否会使 jQuery 选择器本身无效还有待商榷。另外,jQuery 的选择器语言非常开放,您可以轻松添加自己的运算符,甚至可以更改 . 的含义。

标签: jquery css regex jquery-selectors


【解决方案1】:

Specification of CSS 3 Selectors 有一个关于grammar of selectors 的部分,您可以使用它来构建正则表达式。只需从 selector 开始,然后将每个变量替换为其产生式,直到没有剩余变量为止。

【讨论】:

    【解决方案2】:

    正则表达式并不适合解析器。 (它们可能会成为解析器的重要部分。)如果您真的需要这样做,您可能需要实际使用解析器。 StackOverflow 上的 answers to this question here 可能会有所帮助。

    【讨论】:

    • 这个其他问题没有出现在我的相关搜索中,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2012-06-12
    • 2012-06-25
    • 1970-01-01
    相关资源
    最近更新 更多