gpt4 book ai didi

javascript - 如何使用正则表达式验证此类输入?

转载 作者:行者123 更新时间:2023-12-03 12:18:15 25 4
gpt4 key购买 nike

有人可以通过使用正则表达式来帮助解决这个问题。“useInput”函数必须将分钟作为第一个参数,将秒作为第二个参数,如果输入可以是:“1 2”(两位数 - 分秒),“1”(只是一个数字 - 分钟) , "1分2", "2秒1"。

不是那么必要,但如果不是太难:seconds = sec = second = s;分钟 = 分钟 = 分钟 = 米; Іnstead of "1 minutes"你可以将 "1 min"写入 "input"

const input = "   2   seconds   1   minutes   "
const regexTimer = new RegExp(/([0-9]+)\s*minutes?|([0-9]+)\s*seconds?/, 'g')

useInput(input.replace(regexTimer, '$1$2')).split(' '));//1 parameter is minute, 2 parametr is second

function useInput(minutes, seconds){...};

最佳答案

您可以使用捕获组并将这些组值传递给函数。

检查哪些组值不为空,并基于此以正确的顺序将参数传递给函数 useInput。

对于秒和分钟的部分名称,您可以使用嵌套的可选组。

^\s*(?:(\d+)(?:\s*(\d+))?|(\d+)(?:\s+s(?:ec(?:onds?)?)?)?(?:\s+(\d+)(?:\s+m(?:in(?:utes?)?)?)?)?|(\d+)(?:\s+m(?:in(?:utes?)?)?)?(?:\s+(\d+)(?:\s+s(?:ec(?:onds?)?)?)?)?)\s*$

Regex demo

const useInput = (minutes, seconds) =>
console.log(`minutes: ${minutes ? minutes : "n/a"} - seconds: ${seconds ? seconds : "n/a"}`);
const regex = /^\s*(?:(\d+)(?:\s*(\d+))?|(\d+)(?:\s+s(?:ec(?:onds?)?)?)?(?:\s+(\d+)(?:\s+m(?:in(?:utes?)?)?)?)?|(\d+)(?:\s+m(?:in(?:utes?)?)?)?(?:\s+(\d+)(?:\s+s(?:ec(?:onds?)?)?)?)?)\s*$/;
[
"1",
"1 2",
"1 minutes 2",
"4 seconds 3",
"5 seconds",
"6 minutes",
"7 min",
"8 sec",
"9 s 10 m",
"11 m 12 second",
"20 9 sec",
"30 s 44",
"test"
].forEach(s => {
let m = s.match(regex);
if (m) {
if (m) {
if (undefined !== m[1]) useInput(m[1], m[2])
if (undefined !== m[3]) useInput(m[4], m[3])
if (undefined !== m[5]) useInput(m[5], m[6])
}
}
})

关于javascript - 如何使用正则表达式验证此类输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66154361/

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