Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   проблема с регулярным выражением очень нужна подсказка (https://javascript.ru/forum/css-html/35134-problema-s-regulyarnym-vyrazheniem-ochen-nuzhna-podskazka.html)

mixt 31.01.2013 15:29

проблема с регулярным выражением очень нужна подсказка
 
есть выражение:
var mrt = /(|name="[.\\/#a-zA-Z0-9\\(]*|id="[#a-zA-Z0-9\(]*\(|src="[#a-zA-Z0-9\\(]*\\(|href="[#a-zA-Z0-9\(]*|">|\s>|https?:\/\/|ftp:\/\/)?www\.[-A-Z0-9+&@#\/%?=~_|!:,.;ï]*[-A-Z0-9+&@#\/%=~_|ï]/gim;

браузер гугается так:
SyntaxError: unterminated parenthetical
и так
Uncaught SyntaxError: Invalid regular expression: /(|name="[.\\/#a-zA-Z0-9\\(]*|id="[#a-zA-Z0-9\(]*\(|src="[#a-zA-Z0-9\\(]*\\(|href="[#a-zA-Z0-9\(]*|">|\s>|https?:\/\/|ftp:\/\/)?www\.[-A-Z0-9+&@#\/%?=~_|!:,.;ï]*[-A-Z0-9+&@#\/%=~_|ï]/: Unterminated group

Подскажите, пожалуйста, в чем проблема зарыта?

Deff 31.01.2013 15:37

mixt,
Лучше поясните для чего она и что делает
И пару тройку входных строк и выходных (для входных) после регулярки

mixt 31.01.2013 15:46

оно должно находить url в тексте
вот на такое не ругается:
var mrt = /(src="|href="|">|\s>|https?:\/\/|ftp:\/\/)?www\.[-A-Z0-9+&@#\/%?=~_|!:,.;ï]*[-A-Z0-9+&@#\/%=~_|ï]/gim;

а на усложненное верхнее ругается !!!

ksa 31.01.2013 16:53

Цитата:

Сообщение от mixt
оно должно находить url в тексте

А так?

var s='<script src="http://code.jquery.com/jquery-latest.js"></script\>';
alert(s.replace(/(src=(")|href=")[^"]+"/gi,'$1url$2'));

mixt 31.01.2013 17:26

Цитата:

Сообщение от ksa (Сообщение 230755)
А так?

var s='<script src="http://code.jquery.com/jquery-latest.js"></script\>';
alert(s.replace(/(src=(")|href=")[^"]+"/gi,'$1url$2'));

спасибо, но нужно в моей регулярке ошибку найти

mixt 31.01.2013 19:36

так что нет идей?

Deff 31.01.2013 20:25

Цитата:

Сообщение от Deff
пару тройку входных строк и выходных (для входных) после регулярки

Цитата:

Сообщение от Deff
поясните для чего она и что делает

...

mixt 01.02.2013 01:33

а что значит входные и выходные строки?

Deff 01.02.2013 01:57

mixt,
Регулярка используется для преобразования одной строки - в другую

Поясните для чего она(что должна делать) и выложите примеры строк до преобразования и после

ksa 01.02.2013 09:30

Цитата:

Сообщение от mixt
нужно в моей регулярке ошибку найти

Задачи так не решаются... :D
- Обозначается проблема
- Создаются тестовые примеры
После чего можно приступать к устранению проблемы.

Вариант "я тут чё-то намутил, подправьте мою муть" мало интересен и возможно безперспективен...

mixt 01.02.2013 17:28

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


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

рони 01.02.2013 17:51

mixt,
замените это \( на это \u0028 и будет вам счастье валидное

mixt 01.02.2013 17:57

Цитата:

Сообщение от рони (Сообщение 230936)
mixt,
замените это \( на это \u0028 и будет вам счастье валидное

а в каком месте?

рони 01.02.2013 18:13

Цитата:

Сообщение от mixt
а в каком месте?

:-?
например тут id="[#a-zA-Z0-9\(]*\(|src="[#a-zA

rgl 01.02.2013 18:27

Первое выражение в самом первом сообщении начинается с открывающей круглой скобки (не экранированной), которая нигде не закрывается.

mixt 01.02.2013 18:34

Цитата:

Сообщение от rgl (Сообщение 230945)
Первое выражение в самом первом сообщении начинается с открывающей круглой скобки (не экранированной), которая нигде не закрывается.

вот спасибо, видно глаз замылился ..проглядел я эту скобку

mixt 01.02.2013 18:47

еще один вопрос, как правильно добавить в эту конструкцию [#a-zA-Z0-9\(] проверку не только по латинице, а по любой языковой раскладке?

рони 01.02.2013 18:51

Цитата:

Сообщение от mixt
еще один вопрос, как правильно добавить в эту конструкцию [#a-zA-Z0-9\(] проверку не только по латинице, а по любой языковой раскладке

добавить нужные буквы диапазоном если идут одна за другой или каждую
для русского языка[#a-zA-Z0-9\(А-Яа-яЁё]

mixt 01.02.2013 18:56

как для русского отдельно сделать понятно, я имел ввиду что-то универсально ..чтобы и для китайског ои фрацузского срабатывало...

mixt 04.02.2013 12:37

так какие идеи по вариантам для других языков?


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