匹配文本的正则表达式只包含空格和br标记

时间:2013-09-25 09:16:14

标签: javascript regex

我有一个像这样的字符串

                       <br />                     <br />                <br />

或有时

            <br />          <br />

            <br />

如何在Javascript中检查字符串是否只包含空格和br? EX: 如果(/ \ S * /。试验(内容)){ }

3 个答案:

答案 0 :(得分:2)

有两件事要检查和允许,空格和<br />,这样就建议一个允许零次或多次重复的交替,锚定在两端:

if(/^(?:\s|<br \/>)*$/.test(content)){ }

这意味着:

  • ^ - 输入开始
  • (?:...) - 非捕获组
  • \s - 任何单个空格字符
  • | - 交替,允许它两边的东西
  • <br \/> - 匹配文字字符串<br />(请注意,我们必须逃避/
  • * - 之前发生的事情为零或更多,非捕获组
  • $ - 输入结束

如果标签中的空间或固体可能不在那里,或者空间可能重复,那么:

if(/^(?:\s|<br *\/?>)*$/.test(content)){ }

在空格后添加*可以有零个或多个空格;在固相线(?)之后添加/可以让它在那里(一次)或不存在。

注意:以上内容并不允许br标记上的任何属性,例如<br class="foo" /><br data-foo="bar"/>等。它还匹配空字符串。

允许属性但继续匹配空字符串:

if(/^(?:\s|<br[^>]*>)*$/.test(content)){ }
// Change ----^^^^

允许属性和禁止空字符串(必须至少有一个空格或一个br标记):

if(/^(?:\s|<br[^>]*>)+$/.test(content)){ }
// Change ------- ---^

答案 1 :(得分:2)

让我们以此字符串为例:

var input = "    <br />   ";

首先,我希望从输入中删除所有空格,这样我们就不必担心正则表达式检查这些空格:

var testData = input.replace(/\s/g, '');
//in this example, testData will now be "<br/>"

您可以执行正则表达式来检查是否仅存在<br/>

var regex = /^(?:<br\/>)*$/;
var isValid = regex.test(testData);

Here is a working example

答案 2 :(得分:-1)

"^\s*<br />$"

为您提供任意数量的空白行(包括输入和制表符!)并以“
”结尾