Autor Zpráva
Exkalibr
Profil *
Příklad stringu:
A) element = 'l~[kh]ól-[ch]ef'
B) element = 'ub~kól'

Chci zjistit zda se na začátku slova nalézá např. 'l~' nebo 'ub~' apod. Neznám tedy přesnou délku toho podřetězce, který je na začátku. Umím otestovat zda se to nachází uvnitř řetězce, ale jak zjistit délku toho podřezce 'l~' či 'ub~'?

[code]/(^[bmkl][~eai]?)|(^wa|^w~|^u|^wi|^we)[bmkl]/.test(element)[code]
Radek9
Profil
Exkalibr:
Z tvého popisu jsem toho bohužel moc nepochopil. Můžeš zkusit nějak lépe popsat tu syntaxi toho stringu? A hlavně, co má být výstupem? Mluvíš o nějaké délce, ale používáš metodu test.
Exkalibr
Profil *
Radek9:
Hledám dva možné pod-řetězce:
1) ^[bmkl][~eai]?
2) (^wa|^w~|^u|^wi|^we)[bmkl]
Když je tento podřetězec nalezen, potřebuju zjistit jak je dlouhý.

Dám příklad možných podřetězců - jako oddělovač zde použiju čárku a mezeru:
ad 1) b, ba, b~, be, m, ma, me, mi, k, ke, k~, l~, le, la
ad 2) wab, wem, w~m, wel, ume, ume~, atd.
délka tohoto podřetězce je 1-3 znaky, ale kdybych ten výraz ještě upravil, tak by mohla mít až 4 znaky. Za tímto podřetězcem, který je na začátku slova následují další znaky, ale mě zajímá délka jen toho prvního.

Jednak mi jde o to ověřit zda to slovo splňuje danou podmínku, ale také chci vědět, jak dlouhý podřetězec tam je. Prostě potřebuju vědět na které pozici pokračuje to slovo.

Třeba ve slovu midbár je délka podřetězce 2 a tak vím, že dbár začíná od třetího znaku (2+1).
Radek9
Profil
Exkalibr:
Jasně, chápu. V tom případě použij metodu exec. Ta ti rovnou vrátí i matchnuté podřetězce.
var res = /((^[bmkl][~eai]?)|(^wa|^w~|^u|^wi|^we)[bmkl])/.exec(element)
if (res) {
  var length = res[1].length
}
Exkalibr
Profil *
Díky

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0