Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Простая регулярка (https://javascript.ru/forum/misc/30786-prostaya-regulyarka.html)

Deff 15.08.2012 22:14

PashPP,
Цитата:

Сообщение от Deff
Приведите пару примеров входных строк и строк в итоге

То что Вы привели - То Вам и Выдали!!

oneguy 15.08.2012 22:16

Цитата:

Сообщение от Deff
До конца($) и сначала(^) ( при g (глобальном поиске

Это не совсем правильно.
^ и $ обозначают начало и конец входной строки соответственно, а при флаге m - ещё и начало и конец подстроки входной строки, отделённой символами переноса строки.
Наличие флага g на это не влияет.
Примеры:
alert(/^12/.test("12sddaas")); //true
alert(/^12/.test("312ssddd")); //false
alert(/[a-z]{2}$/.exec("312ssddd")[0]); //dd
alert(/[a-z]{2}/.exec("312ssddd")[0]); //ss
alert("sddaas\nsssss\n3333".match(/^[a-z]{2}/gm).join(" ")); //sd ss
alert("sddaas\nsssss\n3333".match(/^[a-z]{2}/g).join(" ")); //sd
alert("sddaas\nsss35\n3333".match(/\d{2}$/gm).join(" ")); //35 33

PashPP 15.08.2012 22:23

Цитата:

Сообщение от Deff
То что Вы привели - То Вам и Выдали!!

Нет.
Мой пример раньше:
f = str.match(re)
re = ???

str = "+=43534"
f = null

str = "++2323"
f = "null"

str = "=343434"
f = null

str = "dsfsdf"
f = "dsfsdf"

str = "=43gfvb"
f = "gfvb"

str = "+====+"
f = "===+"

Ни с re = /^(?:\+[+=]|=)\d/ , ни с re = /\+?[\+=]\d*/i такого результата не будет. По сути, вы написали ту самую регулярку. что и у меня в стартовом посте /(?:\+\=|\=|\+\+)(?=\d)\d*/ только красивее.

oneguy,
Эм. А что означает "начало и конец входной строки"?
То есть эти символы должны стоять точно первыми/последними и остальное. если есть регулярка будет хватить с серединки?

Deff 15.08.2012 22:27

<pre>
f = str.match(re)
 re = ???

 str = "+=43534"
 f = null

 str = "++2323"
 f = "null"

 str = "=343434"
 f = null

 str = "dsfsdf"
 f = "dsfsdf"

 str = "=43gfvb"
 f = "gfvb"

 str = "+====+"
 f = "===+"
</pre>

<script type="text/javascript">
function TstFunc()  {
 var a = document.getElementById('Input');
 var str = a.value;
  var str2= str.replace(/(\+?[\+=]\d*)/i,'')
 var str2=RegExp["$1"]
 alert(str2)
}
</script>
<input id="Input" type="text"  value="+=43534"><input type="button" value="Test" onclick="TstFunc()">

Aetae 15.08.2012 22:29

PashPP,
А может не удалять гланды через жопу и не использовать match где он не нужен?

oneguy 15.08.2012 22:41

Цитата:

Сообщение от PashPP
oneguy,
Эм. А что означает "начало и конец входной строки"?
То есть эти символы должны стоять точно первыми/последними и остальное. если есть регулярка будет хватить с серединки?

Нет. Если не установлен флаг m, то символ ^ означает, что текущий индекс во входной строке равен 0, $ - соответственно длине входной строки. Эти символы не ловят никаких символов во входной строке, а проверяют текущую позицию при поиске.

PashPP 15.08.2012 22:43

Deff,
Хм. Спасибо за пример.
Aetae,
Как человек не сведущий в медицине и жопах, не смогу ответить.

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

PashPP 15.08.2012 22:51

oneguy,
Хм. Что-то уже догадываюсь, но...
Текущий индекс чего?

Aetae 15.08.2012 22:53

Регулярка обратная данной это: /^(?:[^+][^+=]|[^=])\D+/ .
Только она вам не поможет в случае с match и приведёнными примерами. Как ни старайся, а пинцетом гвоздь не забьёшь.

PashPP 15.08.2012 22:56

Aetae,
Спасибо.


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