我如何编写正则表达式来检查由等号分隔的文本字符串?

How would i use regular expressions to check for characters within the following string of text:

=== logo ===

I tried to use a regex tester but could come up with the correct expression for i've tried this:

 /^[=]{3}$/
  1. I want search within a string find where the text starts with 3 equal signs.
  2. Find a string or any other characters within the equal signs.
  3. Find 3 more equal signs.. ending the expression.

Thanks in advance.

Try using this regex:

/===[^=]+===/

If you want to capture the text, surround it in parentheses:

/===([^=]+)===/

Here's the fiddle: http://jsfiddle.net/jufXA/


If you might have equal signs in your text (but less than 3, obviously) you should instead match everything lazily (which is a tad slower):

/===(.+?)===/

Here's the fiddle: http://jsfiddle.net/jufXA/1/

How about as simple as...

/===(.+?)===/

For example:

$test = "here's ===something special===, like ===this=one===";
preg_match_all('/===(.+?)===/', $test, $matches);
var_dump($matches[1]);

Laziness is kinda virtue here: the regex engine won't advance past the first 'closing delimiter ==='. Without ?, however, you need to use negated character classes (but then again, what about ===something=like=this===?).

I prefer:

/([=]{3})\s*(.+?)\s*\1/.

This puts the text markup (three equal signs) in the beginning and then just uses a back reference for the end. It also trims your text of spaces, which is what you probably want.