2017-01-05 7 views
0

Я получаю ввод данных пользователем в формеРегулярное выражение для вычисления следующей строки

ключом1 = value1, key2 = значение2, ключ3 = value3

и может быть любое количество ключа пары значений,

Я написал следующее регулярное выражение для оценки выше строки.

[a-z0-9]+(:|=)[a-z0-9]+ 

, но я не так уверен, как проверить кратные пар ключ-значение, эта строка я написал можно оценить одну пару ключей значение, я хочу сделать это оценить отверстие строку ключевых пар значений. высоко ценят какие-либо рекомендации по этому

ответ

1

Попытка

([a-z0-9]+(:|=)[a-z0-9]+,?)+ 

Чтобы удалить Запятая

if(str.substr(-1) === ',') 
    str = str.substr(0, str.length - 1) 
+0

спасибо за решение, последняя запятая не должна присутствовать в конце последней пары значений ключа, как поставить ограничение на то, что – KItis

1

Попробуйте это регулярное выражение (\w+)[:=](\w+),?, в которой группа 1 соответствует ключу и группы 2 соответствуют значениям.

Вы также можете использовать split, это может быть быстрее.

var input = "your input"; 
var pairs = input.split(",") 
for (i = 0; i < pairs.length; i++) { 
    var parts = pairs[i].split(/[:=]/); 
    var key = parts[0]; 
    var value = parts[1] 
} 

Не забудьте upvote и принять :)

+0

hanks для решение, последняя запятая не должна присутствовать в конце последней пары значений ключа, как поставить ограничение на это – KItis

+0

Что вы хотите, вы хотите удалить дополнительную запятую в конце? –

1

Общий подход к (аб) использовать replace, чтобы сделать работу в одном кадре:

str = "key1=value1,key2=value2,key3=value3" 
 

 
re = /(\w+)[:=](\w+)/g 
 

 
obj = {} 
 

 
str.replace(re, (_, $1, $2) => obj[$1] = $2) 
 

 
console.log(obj)