#javascript #php #regex

Jak to ogarnąć aby ta kur.. przyjmowała tylko 9 cyfr nie mniej nie więcej bez żadnych gówien.

Mam dwa pliki.

/js/validate.js

function validate_isPhoneNumber(s)
{
var reg = /^[+0-9. ()-]+$/;
return reg.test(s);
}

/classes/Validate.php

public static function isPhoneNumber($number)
{
return preg_match('/^[+0-9. ()\/-]*$/', $number);
}
@malpi: To zależy już od języka i metody robiącej matcha. Czasem #!$%@? na całym tekście, czasem robimy wyszukiwanie itd.

W javie na przykład jest założenie, że cały tekst #!$%@? do podanego regexa, ale są też metody do szukania, podmiany, itd.
  • Odpowiedz
Jak zrobić, żeby znalazło "body" w tekście, ale tak, żeby pokazało max 20 znaków przed i po znalezionym słowie.

Jak zrobię:
results = re.findall(".{20}body.{20}", content)

to znajdzie tylko dokładne dopasowanie gdzie jest 20 znaków przed i po a ja chciałbym wszystkie body, tylko żeby pokazywało te 20 znaków przed i po znalezionym "body".

#python #regexp #regex
czy to jakieś strukturalizowane dane typu html/xml?


@qbek: Nie. Po prostu w javascript coś nie działało i szukałem, gdzie użyłem "body" oraz chciałem podejrzeć w jakim kontekście było użyte. Także to rozwiązanie {0,20} dało dobre wyniki.
  • Odpowiedz
#programowanie
#regex #regexp
elo. czy jest możliwośc napisania regexpa, który wyciągnie wszystkie kombinacje występujących po sobie trzech słow minimum 2 literowych?
Przykład:
Ala ma # bardzo miłego grzecznego kota
Output:
1) bardzo miłego grzecznego
2) miłego grzecznego kota

Na ten moment mam coś takiego:
[\p{IsAlphabetic}]{2,} [\p{IsAlphabetic}]{2,} [\p{IsAlphabetic}]{2,}
ale wykryte zostaje tylko 'bardzo miłego grzecznego'
@grizzly_joe: po co regexp do czegoś do czego nie jest potrzebny regex?

scala> "Ala ma # bardzo miłego grzecznego kota".split(" ").sliding(3).filter(_.forall(_.length > 2)).toList
val res5: List[Array[String]] = List(Array(bardzo, miłego, grzecznego), Array(miłego, grzecznego, kota))
  • Odpowiedz
#regex #wyrazeniaregularne #javascript #html #html5

Potrzebuję zrobić maskę na input. Z różnych względów muszę zrobić to za pomocą js.
Dla uproszczenia przyjmijmy, że chodzi o wyczyszczenie zmiennej ze zbędnych znaków.

Ma zostać tylko cena w formacie:
cyfry(od 1 do 6), kropka (może być, ale nie musi), jeśli była kropka to tutaj 1 lub 2 liczby.
Jeśli ktoś wpisze 123.456 to wyjściowe ma być 123.45

Z góry dzięki za pomoc :-)
  • 0
@pyroxar kropka . Znaczy "dowolny znak", escape'owana kropka \. znaczy kropka.

Poza tym Twoje wyrażenie i tak jest złe w całości, gdzieś się tam totalnie pogubiłeś. To wynika choćby z faktu niedomkniecia jednego nawiasu.

Kolejna rzecz że nawet jak poprawisz to i tak będzie źle bo standard adresów email jest bardzo skomplikowany, teoretycznie:
adam.nowak+xyz@localhost jest prawnym adresem lub:
PanAdam@178.231.83.17

@Czlowiek podrzucił dobry link do poczytania.

"Don’t go overboard in trying to eliminate
  • Odpowiedz
  • 1
@pyroxar po wysłaniu komentarza chyba zrozumiałem że Twoje wyrazenie może jednak mieć poprawą składnie tylko wykop masakruje backslashe przy zapisie komentarza xD i Tobie pewnie też zmasakrował.

Niemniej wszystko co napisałem powyżej nadal w sumie aktualne.
  • Odpowiedz
halp XD
#regex
dawno dawno temu korzystałem delikatnie z regexów i teraz mi są turbo potrzebne xD

Mam string "X/0/12/34/5678/9" i muszę z niego wyciągnąć "12", totalnie nie mam pomysłu jak to zrobić, szczególnie, że pierwszy i drugi segment ("0" i "12") czasem jest jedno a czasem dwucyfrowy (zawsze liczba, nigdy znak).
Pewnie to banał ale nie pamiętam tego za cholere xD
#javascript
@KKK1337: tak jest, nie koniecznie fakturowy ale numerowanie dokumentów.
A co do wykorzystania to jestem ameba z js, ostatnio coś pisałem w 2016 xD także będę tryhardował
  • Odpowiedz
Pytanie czy chcesz się zabezpieczyć przed inputem, który jednak będzie miał inny format (litery zamiast cyfr) i go odrzucić, czy nie. Ja wolałbym się zabezpieczyć, Ty nie. OP może sobie wybrać wedle własnego uznania.
  • Odpowiedz
10 ORE => 10 A
1 ORE => 1 B
7 A, 1 B => 1 C
7 A, 1 C => 1 D
7 A, 1 D => 1 E
7 A, 1 E => 1 FUEL

Czemu taki #regex ^((\d+ [A-Z]+,? ?)+) => (\d+ [A-Z]+)$ mi nie łapie od trzeciej linijki tych 7A na początku?
Drugie pytanie to jak je złapać (w sensie jednocześnie z pozostałymi, np. ['1A', '1E', '1FUEL']
@zwei: nie rob tego regexem, szkoda zachodu. zrob najpierw split po '=>', lewa strone znowu zrob split po ','. To co zostanie zrob split po spacji i bedziesz mial juz ladnie zrobione.
  • Odpowiedz