Javascript 正则表达式从字符串中提取数字和日期
我试图从字符串中提取日期、百分比或数字。字符串可以是:Javascript 正则表达式从字符串中提取数字和日期,javascript,regex,Javascript,Regex,我试图从字符串中提取日期、百分比或数字。字符串可以是: 响应值10(我想从这里提取10) 响应值2014年12月10日(我想从这里摘录2014年12月10日) 响应值为2015年8月(我想从这里提取2015年8月) 我把正则表达式写成(?:\d{2}\/\d{4}\\d{2}(?:\/\d{2}\/\d{4})正则表达式满足了2014年12月12日、2012年2月10日的要求 我还试图修改相同的正则表达式,以获得10、08/2015和10/10/2015,但不知道如何获得 如何实现这一点?Mat
(?:\d{2}\/\d{4}\\d{2}(?:\/\d{2}\/\d{4})
正则表达式满足了2014年12月12日、2012年2月10日的要求
我还试图修改相同的正则表达式,以获得10、08/2015和10/10/2015,但不知道如何获得
如何实现这一点?Match方法支持regExp,并将返回一个包含您要查找的项目的数组:
var date=“12/12/2014”
var arr=date.match(/(\d{2})[\/](\d{2})[\/](\d{4})/);
console.log(arr[0]);
控制台日志(arr[1]);
控制台日志(arr[2]);
控制台日志(arr[3])代码>匹配方法支持regExp,并将返回一个包含您要查找的项目的数组:
var date=“12/12/2014”
var arr=date.match(/(\d{2})[\/](\d{2})[\/](\d{4})/);
console.log(arr[0]);
控制台日志(arr[1]);
控制台日志(arr[2]);
控制台日志(arr[3])代码>要匹配示例数据,可以使用交替匹配2位/4位数字,或使用匹配2位和4位数字的可选部分匹配2位数字
\b(?:\d{2}\/\d{4}|\d{2}(?:\/\d{2}\/\d{4})?)\b
解释
\b
单词边界,防止单词char成为较大单词的一部分
(?:
非捕获组
\d{2}\/\d{4}
匹配2位/4位
|
或
\d{2}
匹配两位数字
(?:\/\d{2}\/\d{4})
可选匹配/2位/4位
)
关闭组
\b
单词边界
注意2和4位数字也可以匹配99和9999。如果你想让你的匹配更加具体,这个页面会很有帮助
const pattern=/\b(?:\/\d{2}\/\d{4}\d{2}(?:\/\d{2}\/\d{4})?)\b/;
[
“响应值为10”,
“响应值2014年12月10日”,
“响应值2015年8月”
].forEach(s=>console.log(s.match(pattern)[0])代码>要匹配示例数据,可以使用交替匹配2位/4位数字,或使用匹配2位和4位数字的可选部分匹配2位数字
\b(?:\d{2}\/\d{4}|\d{2}(?:\/\d{2}\/\d{4})?)\b
解释
\b
单词边界,防止单词char成为较大单词的一部分
(?:
非捕获组
\d{2}\/\d{4}
匹配2位/4位
|
或
\d{2}
匹配两位数字
(?:\/\d{2}\/\d{4})
可选匹配/2位/4位
)
关闭组
\b
单词边界
注意2和4位数字也可以匹配99和9999。如果你想让你的匹配更加具体,这个页面会很有帮助
const pattern=/\b(?:\/\d{2}\/\d{4}\d{2}(?:\/\d{2}\/\d{4})?)\b/;
[
“响应值为10”,
“响应值2014年12月10日”,
“响应值2015年8月”
].forEach(s=>console.log(s.match(pattern)[0])代码>只是为了好玩(regex很好玩)可供选择的答案:
\b(?:(?:\d\d\/){1,2}\d{4}|\d\d)\b
见
\b
-匹配单词边界
(?:
-第一个非捕获组。
(?:
-第二个非捕获组。
\d\d\/
-匹配两个数字和一个文字正斜杠
){1,2}
-关闭第二个非捕获组并使用它一两次
\d{4}
-匹配四位数字
|
-替换(或)
\d\d)
-两位数字并关闭第一个非捕获组
\b
-匹配单词边界
也许我们可以做到这一点,即使没有改变:
\b\d\d(?:(?:\/\d\d){1,2}\d\d)?\b
见
\b
-匹配单词边界
\d\d
-匹配两位数字
(?:
-第一个非捕获组。
(?:
-第二个非捕获组。
\/\d\d
-匹配一个文本斜杠和两个数字
){1,2}
-关闭第二个非捕获组并使用它一两次
\d\d
-匹配两位数字
)?
-关闭第一个非捕获组并将其设置为可选
\b
-匹配单词边界
只是为了好玩(regex很好玩)接受答案的另一种选择:
\b(?:(?:\d\d\/){1,2}\d{4}|\d\d)\b
见
\b
-匹配单词边界
(?:
-第一个非捕获组。
(?:
-第二个非捕获组。
\d\d\/
-匹配两个数字和一个文字正斜杠
){1,2}
-关闭第二个非捕获组并使用它一两次
\d{4}
-匹配四位数字
|
-替换(或)
\d\d)
-两位数字并关闭第一个非捕获组
\b
-匹配单词边界
也许我们可以做到这一点,即使没有改变:
\b\d\d(?:(?:\/\d\d){1,2}\d\d)?\b
见
\b
-匹配单词边界
\d\d
-匹配两位数字
(?:
-第一个非捕获组。
(?:
-第二个非捕获组。
\/\d\d
-匹配一个文本斜杠和两个数字
){1,2}
-关闭第二个非捕获组并使用它一两次
\d\d
-匹配两位数字
)?
-关闭第一个非捕获组并将其设置为可选
\b
-匹配单词边界
您能提供一个您想要匹配的值列表吗?您当前的正则表达式不符合matc