【发布时间】:2020-02-03 14:46:21
【问题描述】:
我真的不想在这里问这个问题,因为我确信这会让我被否决,但我真的被困住了。
我使用了多种工具来测试正则表达式,但语法非常混乱。
我的尝试
我将为此使用 javascript,例如,我有以下字符串:
Product ID: 4381 - Fanta Berry cans 355ml x 24
这是来自自动完成下拉菜单的搜索结果,其格式始终为:
Product ID: product_id - Product Name
现在我需要获取 product_id : 和 - 之间的数字
我试过了
/[\d]/g
但这只是选择字符串中的所有数字。
我也试过了:
[(:\b)-]
然后选择 : 和 - 这是我想要获得的数字之间的字符。但我似乎无法弄清楚获取它们之间数字的语法。我觉得我非常接近,但经过数小时的搜索,我似乎无法破解它,我知道这不是人们为你工作的地方,但我向你保证,我已经尝试过并且真的在损失!如果有人能告诉我获得该数字所缺少的一点语法,我将非常感激。
【问题讨论】:
-
你可以尝试这样
^[^:]+:[ \t]*(\d+)使用捕获组regex101.com/r/yNY78Z/1或更精确的^Product ID: (\d+) - -
str.match(/Product ID: (\d{1,4}) -/)[1] -
您有什么特殊原因需要通过解析字符串来获取产品 ID 吗?
-
您可以将其与
/\d+/匹配,即string.match( /\d+/ )[ 0 ]。 (另外,请记住,如果您不使用“global”标志,它只会匹配第一个结果。) -
PS:这可能是“又一个简单的正则表达式问题”,但您的问题包括努力的迹象(尝试,这让我相信您在询问之前确实花时间在这上面),所以我不看不到投票的理由。我只是不喜欢它,当人们的决策流程图具有从“开始”到“问 SO”的第一个箭头时。在尝试之后帮助那些实际上陷入困境的人正是 SO 的目的。
标签: javascript regex