2016-02-16 7 views
0

Я действительно пытаюсь заставить простое регулярное выражение работать. Я знаю, что на это много Q/A, но я не могу найти подходящее решение.Блокировка вертикальных пространств в конце строки - Regex

Я не допущу никакого специального символа, вертикальные промежутки между ними (сделанные путем нажатия ввода) и вертикальные пространства в конце строки, не более того.

Вот мой Regex:

/^[^"#$%&\/:\v?\^_|£§°ÀÇÈÉÌÒÙ€]+$/

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

Я попытался с:

/^[^"#$%&\/:\v?\^_|£§°ÀÇÈÉÌÒÙ€]+[^\v]$/

Но это не будет работать.

Как я могу заставить это работать и для того, чтобы не допускать вертикальные пространства в самом конце строки?

Прошу прощения, если моя проблема немного тривиальна. Спасибо заранее.

+0

Вы в основном хотите удалить новые строки. 'string = string.replace (/ [\ r \ n] +/g, '\ n')' – Tushar

ответ

1

Я думаю, что ваш подход неправильный. Вместо перечисления всех запрещенных символов перечислите все допустимые символы. Начните с чего-то вроде:

/^[a-zA-Z0-9 ]+$/ 

и добавьте еще другие символы, которые вам нужны.

Примечание: сокращенный класс символов \v не существует в Javascript.

+0

Это работает, за исключением того факта, что он по-прежнему принимает единственное окончательное вертикальное пространство. Если я положу 2 из них, строка не будет принята. – AndreaM16

+0

@ AndreaM16: Это потому, что вы тестируете шаблон в тесте регулярного выражения, который предназначен для pcre (PHP), где якорь '$' может соответствовать концу строки или концу последней строки, за которой следует символ новой строки. Но это не относится к Javascript. Проверьте его с помощью реального кода. –

+0

@ AndreaM16: обратите внимание, что вы можете получить одинаковое поведение по умолчанию с помощью pcre с помощью модификатора D. –

Смежные вопросы