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

PashPP 15.08.2012 20:40

Простая регулярка
 
Еще раз всем привет.
Пробую написать простую регулярку так, чтобы попадало все, что НЕ начинается с += или = или ++ и после цифры.

В общем, регулярку чтоб было сначала += или = или ++ и после цифры написал:
str = prompt("sd");
re = /(?:\+\=|\=|\+\+)(?=\d)\d*/;
found = str.match(re);
alert(found)


Нужна полностью обратная ей. Кстати, я эту правильно написал, вроде работает?

Deff 15.08.2012 21:06

PashPP,
Приведите пару примеров входных строк и строк в итоге

PashPP 15.08.2012 21:12

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 = "===+"

PashPP 15.08.2012 21:13

В общем, мне это надо чтоб ввод всех значений, кроме начинающихся с ++, =, += и дальше цифры отменялся.

Aetae 15.08.2012 21:31

str = "=43gfvb";
alert(/^(?:\+[+=]|=)\d/.test(str) ? str : null)

str = "d43gfvb";
alert(/^(?:\+[+=]|=)\d/.test(str) ? str : null)

Deff 15.08.2012 21:42

<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,'')

 alert(str2)
}
</script>
<input id="Input" type="text"  value="+=43534"><input type="button" value="Test" onclick="TstFunc()">

PashPP 15.08.2012 21:42

Aetae,
/^(?:\+[+=]|=

Сорри, но не то.
Кстати, может мне кто-то обьяснить простыми словами, что делает символ ^ и $ в начале и конце строк? Со справочника не сильно понял. То ли оно ищет с конца/начала, то ли еще что-то...

Deff 15.08.2012 21:44

Цитата:

Сообщение от PashPP
То ли оно ищет с конца/начала,

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

Deff 15.08.2012 21:55

PashPP,
У Aetae, Имхо правильнее он ток звездачку забыл
(Поправь в моей версии
var str2=str.replace(/^(?:\+[+=]|=)\d*/,'')

PashPP 15.08.2012 22:12

Deff,
Спасибо, конечно.
Но вы оба написали обратное тому, что я просил.
Регулярка должна ловить все, что НЕ ловит предыдущие ваши да и моя с стартовом посте.
Вот в примере с replace должно удаляться все, кроме += / ++ / == и цифры. а не наоборот.
Конечно, у меня есть идеи, как это сделать и с регулярками выше, но это немного криво и мне бы чисто ради интереса и обучению регуляркам хотелось увидеть регулярку полностью обратную имеющимся.
Которая должна брать все, что не похоже на +=434343.

Цитата:

Сообщение от Deff
То ли оно ищет с конца/начала,

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

Эм. В смысле, что при значке ^ рядом с знаком, она будет искать именно его, а потом все остальное? Можно пример, пожалуйста, с небольшим пояснением.


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