javascript - 为什么 jquery 正则表达式每次返回不同的测试用例?

标签 javascript jquery regex

当使用正则表达式限制在文本区域中输入 HTML 实体时,我遇到了一个问题。

我使用了这个正则表达式 - /<(.|\n)*?>/g;对于限制 HTML 实体,它对我来说工作得很好,但是当我声明全局变量并使用这个正则表达式时,它每次都会给我不同的 - 不同的测试用例(真/假)。

有一个 Jsfiddle - Try This

当您第一次单击“提交”按钮时,对于相同的内容,您会得到“true”,第二次会得到“false”。

谁能告诉我为什么我的正则表达式每次在全局声明它时都会返回不同的测试用例?

感谢您的帮助......!!!

最佳答案

这是因为您在正则表达式上使用了 g 标志。

如果您需要使用g,您可以在函数内定义您的正则表达式,这样您每次都会得到一个新的

function CheckContent(){
  var RegForRestrictHtmlTags2 = /<(.|\n)*?>/g;  
  $('#txtJobDesc').val("AAAAAAAA<fff>AAAAAA");
  alert(RegForRestrictHtmlTags2.test($('#txtJobDesc').val()));
}

使用 g 标志时,您可以使用 .test 查找主题字符串中的多个匹配项。 .test 将继续为每个唯一匹配返回 true。一旦 .test 返回 false,它将有效地“重置”到起始位置。

考虑这个简单的例子

> var re = /a/g;
undefined

> var str = 'aaaaab';
undefined

> re.test(str); // first a
true

> re.test(str); // second a
true

> re.test(str); // third a
true

> re.test(str); // fourth a
true

> re.test(str); // fifth a
true

> re.test(str); // no more a's; reset
false

> re.test(str); // back to first a
true

关于javascript - 为什么 jquery 正则表达式每次返回不同的测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18842489/

相关文章:

javascript - 密码确认验证未按预期显示

javascript - 需要合并正则表达式jquery

javascript - 在 jquery.click 函数之外使用变量?

javascript - Bootstrap 切换菜单未关闭

javascript - CSS 模块在 Codesandbox 中不起作用 - 即使文件存在也无法找到

javascript - 将 yyyy-mm-dd 转换为星期二 25 日

javascript - 在 redux 中的许多小型可重用 reactjs 组件上使用 connect() 是个好主意吗

javascript - 用样式表中的新样式替换以前的样式值并保存该样式

php - 正则表达式匹配,只提取想要的字符串片段

php - 逗号分隔列表的子字符串的正则表达式