i'm trying create regex validate input match character should exclude input surrounded prefixes (i.e. {#..#}, {@..@} or {$..$}).
given example:
free text fine // should return true {#some other text#} // should return false text numbers 671 // should return true {@hello world@} // should return false {$hello mars$} // should return false {$some text not close // should return true this should possible use of negative look-around, along lines of:
^(\?!=(\{@[^.]+@\}))(\?!=(\{$[^.]+$\}))(\?!=(\{#[^.]+#\})).* any appreciated : )
you syntax bit weird if ask me... suggest:
^(?!\{(?:[$@#]).*(?:[$@#])\}).* first 'group' \{(?:[$@#]) looks opening prefix, .* match in middle , (?:[$@#])\} match closing suffix.
note not allow things like:
{$hello mars$} how you? if want accept well, add end of line anchor:
^(?!\{(?:[$@#]).*(?:[$@#])\}$).* ^ you can use character class have different symbols [@$#] , shorter having multiple negative lookarounds or | operators in side :)
edit: prevent things {#free text fine$}' use:
^(?!\{([$@#]).*\1\}).* or
^(?!\{([$@#]).*\1\}$).* for second version.
\1 backreference , refers first captured group (any of $, @, or #).
Comments
Post a Comment