Запрос на Javascript RegEx
Мне нужно регулярное выражение, которое позволяет использовать только символы 0-9, az, AZ, дефис, знак вопроса и косую черту. Также длина должна быть от 5 до 15.
Пожалуйста, помогите
Я попробовал как ниже, но это не работает.
var reg3 = /^([a-zA-Z0-9?-]){4,15}+$/;
alert(reg3.test("abcd-"));
3 ответа
длина должна быть от 5 до 15 только
Вот почему у вас есть это?
{4,15}+
Просто используйте {5,15}
; это уже квантификатор, и +
после того, как это не сработает. Кроме того, группа не нужна, но все должно работать.
/^[a-zA-Z0-9?/-]{5,15}$/
(Я также добавил косую черту.)
Это то, что вам нужно:
if (/^([a-z\/?-]{4,15})$/i.test(subject)) {
// Successful match
} else {
// Match attempt failed
}
РЕГЭКС ОБЪЯСНЕНИЕ
^([a-z\/?-]{4,15})$
Options: Case insensitive
Assert position at the beginning of the string «^»
Match the regex below and capture its match into backreference number 1 «([a-z\/?-]{4,15})»
Match a single character present in the list below «[a-z\/?-]{4,15}»
Between 4 and 15 times, as many times as possible, giving back as needed (greedy) «{4,15}»
A character in the range between “a” and “z” (case insensitive) «a-z»
The literal character “/” «\/»
The literal character “?” «?»
The literal character “-” «-»
Assert position at the very end of the string «$»
Пара вопросов,
- тебе нужно
{5,15}
вместо{4,15}+
- нужно включить
/
Ваш код может быть переписан как
var reg3 = new RegExp('^[a-z0-9?/-]{5,15}$', 'i'); // i flag to eliminate need of A-Z
alert(reg3.test("a1?-A7="));
Обновить
Давайте не будем путать, может быть с НЕОБХОДИМОСТИ и сконцентрируемся на том факте, который я пытался донести.
{4,15}+
участие в /^([a-zA-Z0-9?-]){4,15}+$/
должно быть написано как {5,15}
, а также /
должен быть включен; который сделает ваше регулярное выражение
/^([a-zA-Z0-9?/-]){5,15}$/
который можно записать как
/^[a-z0-9?/-]{5,15}$/i // i flag to eliminate need of A-Z
Также я надеюсь, что все в порядке с использованием /i