我想檢查某個格式的字符串,如果匹配,則將值分配給字符串某些部分的變量。獲取已知格式字符串的可變部分
例如字符串格式是'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