gpt4 book ai didi

node.js - 有人可以建议一个单行正则表达式来解析带有 - 或/分隔符的字母数字和可选数字 ID 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:05:54 25 4
gpt4 key购买 nike

我正在尝试解析一组遵循以下模式的字符串

{alpha-numeric-id}-{numeric-id}

{alpha-numeric-id}/{numeric-id}
  1. alpha-numeric-id 可以包含 - 字符和数字
  2. numeric-id 始终是一个数字,并且是可选的。
  3. alpha-numeric-idnumeric-id 可以用 -/ 分隔>

我想一步解析出 alpha-numeric-idnumeric-id(如果有的话)。

示例

'ThePixies1996' => { 1: 'ThePixies1996', 2: '' }
'7ThePixies' => { 1: '7ThePixies', 2: '' }
'The-Pixies' => { 1: 'The-Pixies', 2: '' }
'The-Pixies-1234567' => { 1: 'The-Pixies', 2: '1234567' }
'The-Pixies/1234567' => { 1: 'The-Pixies', 2: '1234567' }

到目前为止,我想出的最简单的方法如下:

const parse = str => {
const numeric = str.match(/[-\/]([0-9]+)/)

return numeric
? {
numericId: numeric[1],
alphaNumericId: str.slice(0, -1 * (numeric[1].length + 1))
}
: {
numericId: '',
alphaNumericId: str
}
}

有没有更简单的方法?

最佳答案

如果您知道要做什么,正则表达式会简单得多。话虽如此,这将是一个理想的解决方案:

^([\da-z-]+?)(?:[-/](\d+))?$

说明:

  • ^ 匹配字符串开头
  • ([\da-z-]+?) 匹配并捕获包含 - 的字母数字字符串(非贪婪)
  • (?:[-/](\d+))? 匹配以字符 -/ 开头的字符串,后跟数字序列(捕获)(可选)
  • $ 字符串结尾

参见live demo

JS代码:

var matches = [];
'The-Pixies/12345'.replace(/^([\da-z-]+?)(?:[-/](\d+))?$/ig, function(m, $1, $2) {
matches.push($1, $2);
})

console.log(matches.filter(Boolean));

关于node.js - 有人可以建议一个单行正则表达式来解析带有 - 或/分隔符的字母数字和可选数字 ID 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52341643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com