我想检查某个格式的字符串,如果匹配,则将值分配给字符串某些部分的变量。获取已知格式字符串的可变部分
例如字符串格式是'num_{month}_{year}_10p'
而字符串是'num_october_16_10p'
。我想将可变字符串部分({month}
和{year}
)分配给变量。我不知道提前确切字符串格式,所以我写了简单的功能:
function string(string, regexp, monthPart, yearPart) {
if(!(regexp instanceof RegExp) || !regexp.test(string)) {
return false;
}
// I know that delimiter is underscore
var parts = string.split('_');
return {
month: parts[month],
year: parts[year]
};
}
而且使用它像test('num_october_16_10p', /num_[a-z]{3,9}_[0-9]{2}_10p/, 1, 2);
生成的正则表达式取决于形势。
有没有更好的方法来做到这一点?只使用正则表达式?以及如何支持任何字符串格式(根本没有特定的分隔符\ split()
)?
是您的字符串总是NUM _?_?_ 10便士? –
@AhmetCanGüven不可以,例如,它可以是''util_time_ {month} _ {year}''。 –
因此,一个基本的reg表达式匹配'/ _([^ _] +)_([^ _] +)_ /'或带有月份名称和\ d {2}的年份 – epascarello