我有一个这样的字符串
<br /> <br /> <br />
或者有时
<br /> <br />
或者
<br />
如何检查字符串是否仅包含 Javascript 中的空格和 br?例如: if(/\s*/.test(content)){ }
我有一个这样的字符串
<br /> <br /> <br />
或者有时
<br /> <br />
或者
<br />
如何检查字符串是否仅包含 Javascript 中的空格和 br?例如: if(/\s*/.test(content)){ }
让我们以这个字符串为例:
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);
您要检查和允许两件事,空格和<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 ------- ---^
"^\s*<br />$"
为您提供任何数量的空格(包括输入和制表符!)并以“ ”结尾的行