0

我有一个这样的字符串

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

或者有时

            <br />          <br />

或者

            <br />

如何检查字符串是否仅包含 Javascript 中的空格和 br?例如: if(/\s*/.test(content)){ }

4

3 回答 3

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);

这是一个工作示例

于 2013-09-25T09:23:09.443 回答
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 ------- ---^
于 2013-09-25T09:20:44.983 回答
-1
"^\s*<br />$"


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

于 2013-09-25T09:19:04.730 回答