'matching the regular expression with the whole string

im kinda strumped in a situation where i need to match a whole string with a regular expression rather than finding if the pattern exists in the string.

suppose if i have a regular expression

/\\^^\\w+\\$^/

what i want is that the code will run through various strings , compare the strings with the regular expression and perform some task if the strings start and end with a ^.

Examples

^hello world^ is a match

my ^hello world^ should not be a match

the php function preg_match matches both of the results

any clues ???



Solution 1:[1]

Here is a way to do the job:

$strs = array('^hello world^', 'my ^hello world^');
foreach($strs as $str) {
    echo $str, preg_match('/^\^.*\^$/', $str) ? "\tmatch\n" : "\tdoesn't match\n";
}

Output:

^hello world^   match
my ^hello world^        doesn't match

Solution 2:[2]

Anchor the ends.

/^...$/

Solution 3:[3]

Actually, ^\^\w+\^$ will not match "^hello world^" because you have two words there; the regex is only looking for a single word enclosed by "^"s.

What you are looking for is: ^\^.*\^$ This will match "^^", "^hello world^", "^a very long string of characters^", etc. while not matching "hello ^world^".

Solution 4:[4]

You can use the regex:

^\^[\w\s]+\^$

^ is a regex meta-character which is used as start anchor. To match a literal ^ you need to escape it as \^.

So we have:

  • ^ : Start anchor
  • \^: A literal ^
  • [\w\s]+ : space separated words.
  • \^: A literal ^
  • $ : End anchor.

Ideone Link

Solution 5:[5]

Another pattern is: ^\^[^\^]*\^$ if you want match "^hello world^" and not "hello ^world^" , while \^[^\^]*\^ if you want match "^hello world^" and world in the "hello ^world^" string.

For Will: ^\^.*\^$ this match also "^hello^wo^rld^" i think isn't correct.

Solution 6:[6]

Try

/^\^\s*(\w+\s*)+\^$/

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Toto
Solution 2 Ignacio Vazquez-Abrams
Solution 3 Will
Solution 4
Solution 5 Emiliano M.
Solution 6