【问题标题】:Regular Expression to identify all camel cased strings in a document正则表达式识别文档中的所有驼峰式字符串
【发布时间】:2014-05-08 23:02:48
【问题描述】:

我对正则表达式生疏了,需要一些帮助。继承的 js 代码库混合使用驼峰式和蛇形外壳来处理变量名称和对象属性等内容。

我正在尝试制定一个我可以使用的正则表达式,该表达式将识别所有骆驼大小写的字符串,然后能够用蛇形大小写替换这些字符串。我正在努力解决的部分是在我所拥有的条件下识别驼峰式字符串。

识别哪些字符串是驼峰式大小写:在本文档中,所有驼峰式大小写的字符串都以小写字母、下划线或 $ 开头,然后在字符串后面的某个位置使用大写字母。例如:someCamelCasedString & _someCamelCasedString & $someCamelCasedString。正则表达式需要考虑到我尝试匹配的其中一些字符串可能是对象属性,因此它应该能够识别以下内容:Foo._someCamelCasedString.barFoo[_someCamelCasedString].bar

【问题讨论】:

  • 仅供参考,我已经充实了答案,以考虑一些改进和边缘情况。如果需要改变方向,请告诉我们。
  • 谢谢@zx81,你的回答很完美!很抱歉延迟投票。
  • 很高兴听到它对您有用,感谢您告诉我。 :)

标签: javascript regex


【解决方案1】:

这标识了所有出现的“严格”驼峰式大小写(仅限字母)。以_$foofoo 开头都没有关系。

[a-z]+[A-Z][a-zA-Z]*

一个边缘案例是cameL 这是正确的骆驼案例吗?我假设是这样,但我们可以改变它。

demo

如果您想在字符串中允许其他字符(数字等),那么我们可以将它们添加到字符类中。因此,这是一个根据您的要求进行改进的起点。

例如,如果您知道自己对数字和下划线感到满意,则可以这样做:

[a-z]\w*?[A-Z]\w*

如果您还想在名称中允许使用美元(@Jongware 说 js 字符串允许的字符),您可以这样做:

[a-z][\w$]*[A-Z][\w$]*

然后是什么构成有效字符串的边界的问题,因此我们也许可以设计一些锚点(可能带有偷偷摸摸的前瞻,因为 js 不支持后视)以便避免误报。

【讨论】:

  • 注意:JS 不允许在名称中使用破折号,但它允许下划线、数字和一些意想不到的字符(我想到了$ -- 请参阅stackoverflow.com/questions/1661197/… 以获取完整列表。我希望 OP 没有在“καμήλαΥπόθεση”中找到变量:))
  • @Jongware 感谢您的输入,将“破折号”示例更改为“美元”示例。 :)
  • @PaulT Hey Paul 这个问题解决了吗,还是你还有问题?
【解决方案2】:

可能是这样的:

/(\w|\$)+([A-Z])\w+/gm

您可以在此处使用它并查看示例:http://regexr.com/38qkq 该网站还解释了每个部分在正则表达式中的含义。

【讨论】:

    【解决方案3】:
    /(?:^|\s|[^\w$])([a-z_$][a-zA-Z]*[A-Z][a-zA-Z]*)/gm
    

    测试http://regex101.com/r/pH1aB7

    【讨论】:

      猜你喜欢
      • 2021-10-21
      • 1970-01-01
      • 2015-05-11
      • 1970-01-01
      • 2013-06-26
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多