Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   регулярное выражение (https://javascript.ru/forum/misc/10103-regulyarnoe-vyrazhenie.html)

theo_ 19.06.2010 15:11

регулярное выражение
 
всем привет!
помогите составить регулярное выражение на телефон, точнее на возможное присутствие скобок

в телефоне может присутствовать цифры в скобках, например (921), но не более 1 раза

как записать это в виде регулярного выражения?

Регулярное выражение должно быть в формате RegExp

Ultimatum 19.06.2010 15:27

пример телефона приведите.
8(925)1234567
8(925)123-45-67
7(925)1234567
7(925)123-45-67
+7(925)1234567
+7(925)123-45-67

Я исходил из пративного. Я пользователям дал право писать ()+- , а потом в пыхе просто вырезал и сделал перепроверку

exec 19.06.2010 15:30

/[\+\d]\(\d+\)[-\d]/

theo_ 19.06.2010 15:44

\(\d+\) - вот для этой части нужно указать, что она может быть 1 или 0 раз

\(\d+\)? - такое выражение у меня не работат.. в чем может быть причина?

B@rmaley.e><e 19.06.2010 15:51

theo_, в том, что квантификатор относится к закрыващей скобке, а не всему выражению.
(?:\(\d+\))?

theo_ 19.06.2010 16:05

а с учетом того, что это выражение у меня идет в кавычках - как правильно записать?
символ \ - там становится \\

var phoneTest = "(?:\\(\\d+\\))?";

так правильно?

exec 19.06.2010 16:10

theo_, правильно.

theo_ 19.06.2010 16:33

спасибо всем за помощь

я суть-то понял, но все равно что-то у меня не получается
не работает у меня почему-то ни \\d, ни \d
если заменить на [0-9]+, то все ок
однако выражение со скобками все равно не определяет как правильное
без них пожалуйста, а так нет

соответственно и пробелы не могу победить... \s и \\s не работают

сейчас выражение у меня такое:

var phoneTest = "^[+]?[0-9\\-]+(?:\\([0-9]+\\))?[0-9\\-]+[0-9]{1}$";
var regpx = new RegExp(phoneTest);

theo_ 19.06.2010 19:19

всем еще раз спасибо!
разобрался, все заработало, как надо

Проблемы были связаны с объектом RegExp, отказался от его использования и все стало отлично )

sysya 20.06.2010 23:39

У меня вопрос по url, мне надо удалить из адреса всё после знака вопроса, как это сделать?
Всегда с регулярками была проблема, сделал так:
"?id=27".replace(/\?(.)$/, '');//Не работает

рони 20.06.2010 23:45

"?id=27".replace(/(.*?\?)(.*?)$/, '$1')

sysya 21.06.2010 00:01

Цитата:

Сообщение от рони (Сообщение 60296)
"?id=27".replace(/(.*?\?)(.*?)$/, '$1')

работает, только вопросик тоже надо убрать...
А проще кода нету, только такой вариант?


На счёт убрать вопросик разобрался вот так
"?id=27".replace(/(.*?)\?(.*?)$/, '$1')
Благодарю

exec 21.06.2010 07:37

sysya, если у вас объект location или ссылка (именно DOM-элемент, а не строка), то сойдёт это:

location.search == '';


Если же у вас просто строка, то вот рабочий регэксп:

/\?.+$/

Ultimatum 21.06.2010 08:54

Попробуйте так

/\?(.*)$/

exec 21.06.2010 10:02

Ultimatum, зачем запоминающие скобки?

Ultimatum 21.06.2010 10:29

Цитата:

Сообщение от exec (Сообщение 60332)
Ultimatum, зачем запоминающие скобки?

Как то уже привык так, придает читабельность регулярке.
По крайней мере мне так удобно, хотя понимаю, что так нельзя и передавая пораметры можно запутаться


Часовой пояс GMT +3, время: 03:47.