2011-06-12 3 views
1

У меня есть строка текста, которую я пытаюсь удалить из текстового поля в javascript. Текст, который я пытаюсь удалить, в следующем формате:Регулярные выражения Javascript

Категория: Атрибут

Цвет: Зеленый < - Пример!

var catTitle = 'color'; 
var regexp = new RegExp(catTitle + '\:[.]*$', "g") 
textarea.value = textarea.value.replace(regexp, ""); 

Поскольку атрибут может быть любой длины, мне нужно мое регулярное выражение, чтобы идти вперед до новой строки. Я думал, что [.] * $ Будет приемлемым для соответствия любым символам до новой строки; однако, похоже, что это не работает.

Любая помощь была бы принята с благодарностью.

ответ

2

.внутри класс символов ([]) соответствует самому себе - это уже не шаблон. Кроме того, регулярные выражения: чувствительны к регистру, если не указано иное (флаг «i») и : (в этом контексте) не является особенным, поэтому его не нужно избегать.

[a-z] или \w может быть полезно использовать в соответствии с Атрибутом, в зависимости от ситуации.

Это может тогда идти, как:

var catTitle = "color" 
var re = new RegExp(catTitle + ':[a-z]+$', "gi") 
re.test("Color:Green") // true 
re.test("color:Red") // true 
re.test("color: Red") // false, put perhaps this should be accepted? 
re.test("color:")  // false 
re.test("foo:bar")  // false 

Я также изменил спецификатор от * к + - обратите внимание на случай «цвета:» и как это отвергается. Это также будет отклонять цвета в неанглийских алфавитах.

Счастливое кодирование.

+0

Большое спасибо за ваш ответ - я буду отмечать его в качестве ответа. По истечении 10 минут. – Dave

+0

Подождите несколько часов (или больше), затем сделайте выбор :) –

0

Или, так как вы можете иметь больше строк:

var catTitle = 'Color'; 
var regexp = new RegExp(catTitle + ':.*', "g") 
alert("skzxjclzxkc\nsasxasxColor:Red\nasdasdasd".replace(regexp, "")); 
Смежные вопросы