Мне нужно регулярное выражение, которое позволит использовать алфавиты, дефис (-), цитату ('), точку (.), Запятую (,) и пробел. это то, что я есть сейчасРегулярное выражение для специальных символов
^[A-Za-z\s\-]$
Благодаря
Мне нужно регулярное выражение, которое позволит использовать алфавиты, дефис (-), цитату ('), точку (.), Запятую (,) и пробел. это то, что я есть сейчасРегулярное выражение для специальных символов
^[A-Za-z\s\-]$
Благодаря
Вы, вероятно, пробовали new RegExp("^[A-Za-z\s\-\.\'\"\,]$")
. Тем не менее, у вас есть строковый литерал, и обратные косые черты просто уходят от следующих символов - необходимо только для разделительной цитаты (и для обратных косых черт).
"^[A-Za-z\s\-\.\'\"\,]$" === "^[A-Za-zs-.'\",]$" === '^[A-Za-zs-.\'",]$'
Тем не менее, диапазон s-.
является недействительным. Так что вам нужно будет, чтобы избежать обратной косой черты, чтобы передать строку с обратной косой чертой в конструктору RegExp:
new RegExp("^[A-Za-z\\s\\-\\.\\'\\\"\\,]$")
Вместо regex literals легче читать и писать, как вам не нужно, чтобы строка-экранирующих символов регулярное выражение побега. Кроме того, они анализируются только один раз во время компиляции скрипта - ничто не должно выполняться каждый раз, когда вы оцениваете строку. RegExp
constructor нужно использовать только в том случае, если вы хотите динамически создавать регулярные выражения. Поэтому используйте
/^[A-Za-z\s\-\.\'\"\,]$/
и он будет работать. Кроме того, вам не нужно, чтобы избежать какой-либо из этих символов в character class - так это просто
/^[A-Za-z\s\-.'",]$/
Я удалил \s
из вашего регулярного выражения, так как вы сказали пространство, а не пустое пространство. Вы можете поставить его обратно, заменив пространство в конце с \s
В противном случае довольно просто:
^[A-Za-z\-'., ]+$
Это соответствует началу строки. Любой символ в наборе 1 или более раз и конец строки. Вам не нужно избегать .
в комплекте, на случай, если вам интересно.
Вы довольно близко, попробуйте следующее:
^[A-Za-z\s\-'.,]+$
Обратите внимание, что я предположил, что вы хотите, чтобы соответствовать строки, содержащие один или более любого из этих символов, поэтому я добавил +
после символьного класса, который означает «повторять предыдущий элемент один или несколько раз».
Обратите внимание, что в настоящее время это также позволяет добавлять вкладки и разрывы строк в дополнение к пробелам, потому что \s
будет соответствовать любому символу пробела. Если вы хотите разрешить пробелы, измените его на ^[A-Za-z \-'.,]+$
(просто замените \s
пробелом).
Что мешает вам добавить другие разрешенные символы? У вас была проблема? –
Добавьте точку, цитату и запятую в класс символов? Я считаю, что вам тоже не хватает квантификатора. –
Это не имело ничего общего ** с Javascript ... – Neal