我有一个这样的字符串
<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 />$"
为您提供任何数量的空格(包括输入和制表符!)并以“ ”结尾的行