在 javascript 的正则表达式中使用变量
Use Variable in Regular Expression in javascript
使用正则表达式匹配此模式 - 5 小时到 6 点,凌晨 4 点到上午 9 点,下午 3 点到晚上 8 点,4 点到晚上 9 点......
我已经有正则表达式了 - 5 小时、下午 4 点、凌晨 5 点......
我想将此正则表达式用于凌晨 4 点到上午 9 点的比赛。
like var reg_expr = (/('d{1,2}?h$)|('d{1,2}h(?='s+))|('d{1,2}:'d{2}([ap]m)?$)|('d{1,2}:'d{2}([ap]m)(?='s+))|('d{1,2}:'d{2}(?='s+))|('d{1,2}([ap]m)?$)|('d{1,2}([ap]m)(?='s+))/gi)
这个reg_expr匹配模式,如4小时,下午5点,上午8点.....
这个变量在比赛凌晨 4 点到上午 9 点使用,
like var reg_data = ((reg_expr)(/'s(to)(?='s)/gi)(reg_expr))...
可能吗.???如果是,那么如何???
可能吗.???
是的
如果是,那如何???
可以通过调用 #toString
方法或使用 source
属性来获取 RegExp 对象的字符串表示形式。
此外,您可以从字符串创建RegExp
对象。
var reg_expr = /('d{1,2}?h$)|('d{1,2}h(?='s+))|('d{1,2}:'d{2}([ap]m)?$)|('d{1,2}:'d{2}([ap]m)(?='s+))|('d{1,2}:'d{2}(?='s+))|('d{1,2}([ap]m)?$)|('d{1,2}([ap]m)(?='s+))/;
var reg_data = new RegExp(
reg_expr.source +
/'s(to)(?='s)/.source +
reg_expr.source,
'gi'
);
alert(reg_data.source);
如果您的正则表达式很复杂并且在某个时候变得不可读,您可以考虑语法方法。语法可以声明为对象,符号作为键,相应的产品作为值。作品实际上只是正则表达式,但具有符号的特殊语法(如@symbol
)和空格以提高可读性。当您需要符号的正则表达式时,您可以(简单地)动态创建它:
// grammar for time intervals
times = {
'space' : '''s+',
'digit' : '''d',
'hours' : '@digit @digit?',
'minutes' : ': @digit @digit',
'suffix' : 'h | am | pm',
'time' : '@hours @minutes? @suffix?',
'interval': '@time @space to @space @time'
};
// convert a grammar rule to regex
function regex(grammar, symbol, flags) {
function expand(s) {
return s.replace(/@('w+)/g, function(_, $1) {
return '(?:' + expand(grammar[$1]) + ')';
});
}
return new RegExp(
expand(grammar[symbol]).replace(/'s+/g, ''),
flags);
}
// test!
interval = regex(times, 'interval', 'g');
test = '5h to 6h,4am to 9am,3pm to 8pm,4h to 9pm';
document.write(test.match(interval).join(' ; '));
相关文章:
- 在正则表达式中使用变量
- Javascript 复杂的正则表达式与变量
- Jquery 替换所有文本语法正则表达式中的变量
- 用于比较 HTML 标记内的变量的正则表达式
- javascript中正则表达式(match)中变量的使用错误
- javascript正则表达式:使用单词边界将变量传递给regexp
- 使用正则表达式中的变量与$和^匹配字符串
- 正则表达式提取PHP中的JavaScript变量
- 调整 javascript 正则表达式以过滤来自 url 的变量
- 什么是用于断开变量可能包含“&”的查询字符串的正则表达式
- jQuery 验证器正则表达式使用数组或变量
- 使用变量中的 gi 标志创建正则表达式
- Javascript 正则表达式从句子中检索变量
- 正则表达式中的变量
- 在 javascript 的正则表达式中使用变量
- 添加另一个变量后,正则表达式替换不起作用
- JavaScript 正则表达式,用于获取以 @ 字符开头的字符串中的变量列表
- 如何在正则表达式中使用变量
- 遍历包含正则表达式的 JavaScript 对象变量
- 保存正则表达式匹配项的全局变量名称是什么