RegEx拆分字符串' DB415.DBD21.3'

时间:2016-02-11 14:36:26

标签: javascript regex

我尝试拆分参数(作为字符串接收)以便能够使用这些值来执行某些操作。例如,字符串将是:

DB415.DBX12.3

我要求将它拆分为:

  1. DB:开头的非数字字符 - 使用RegEx /(?:^[A-Z]+)/
  2. 拆分
  3. 415:数字字符 - 使用RegEx /^(?![A-Z]+)(?:\d+)/
  4. 拆分
  5. DBX:非数字字符 - 似乎无法做到这一点,尝试/^(?!^[A-Z]+)(?!\d+)(?!\.)(?:[A-Z]+)/
  6. 12:数字字符
  7. 3:数字字符
  8. 任何有关3,4和5的帮助都会非常有帮助!

    编辑:这是针对Javascript的,理想情况下,我想在数组中获取这5个参数。

1 个答案:

答案 0 :(得分:6)

您可以使用匹配的正则表达式:

foreach ($files as $file) {
    if (preg_match('/RMA_[0-9\-_]+.jpg/i', $file) {
        ...more code here...
    }
}

请参阅regex demo

我只是遵循你的逻辑,正则表达式匹配你枚举的所有步骤。

JS演示:



/^(\D*)(\d+)\.(\D*)(\d+)\.(\d+)$/




关于正则表达式的评论:

  • var re = /^(\D*)(\d+)\.(\D*)(\d+)\.(\d+)$/; var str = 'DB415.DBX12.3'; var res = str.match(re); if (res) { document.body.innerHTML = "<pre>" + JSON.stringify(res, 0, 4) + "</pre>"; }匹配除数字
  • 之外的任何字符
  • \D匹配任何数字
  • \d匹配零个或多个数字(如果必须至少有一个,请替换为\D*
  • \D+匹配文字点。如果可以有多个点,比如连字符,则需要替换为\.这样的字符类,最后保留连字符。