2015-04-01 5 views
0

У меня есть это регулярное выражение:Добавить условие регулярное выражение, чтобы соответствовать только символы ASCII

(по крайней мере один верхний регистр, один downcase, одна цифра, ни пространства, длина 8 128)

Я хочу добавить новое условие: только ASCII символы

в настоящее время я пытаюсь с: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(^\p{ASCII})\S{7,128}.+$/

Который работает (не соответствует): "çko#1!RtsdsWs"

Но будет соответствовать (я хочу сделать не совпадать из-за ç): "kço#1!RtsdsWs"

ответ

1

Используй положительное опережение для проверки ASCII символа перед сопоставлением каждого без пробела.

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?:(?=\p{ASCII})\S){8,128}$ 

ИЛИ

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?:(?=[[:ascii:]])\S){8,128}$ 

DEMO

+0

Хорошо. А если мне не нужны белые пробелы? –

+0

проверить мое обновление ... –

+1

работает как очарование! Благодаря!! –

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