javascript - 如何为字母数字、空格和撇号创建正则表达式,然后仅以字母数字结尾?

标签 javascript regex

我正在尝试根据一些约束创建一个正则表达式,并且我使用了一些有用的资源来尝试和测试它。我知道我需要一个 anchor ($) 来检查字符串的末尾,但我想我误解了 anchor 应该放置的位置。

我知道 /([A-Za-z0-9' ])\w+/ 会给我我想要的东西,因为它包含字母数字+空格+撇号字符,但是我该如何确保它仅以字母数字结尾?

最佳答案

你那里的内容基本上是说“给我一个字母数字、撇号或空格的字符,而不是任意数量的单词”。它也可以位于任何地方,因此您的字符串也可以包含其他字符。根据您的描述,这可能不是您想要的。

我想你可能想要这个:

/^([A-Z0-9' ]+)(?:[A-Z0-9])$/i

这表示“只给我字母数字、撇号或空格,并确保末尾有字母数字”。我去掉了小写字母,只添加了 i (不区分大小写)标志,但您也可以以其他方式切换它。

(?:[A-Z0-9]) 是一个不匹配的集合,用于检查以确保此处存在字母数字。由于它在末尾的 $ 旁边向上移动,这意味着它必须直接位于字符串的末尾。您还需要在开头添加 ^ 以确保整个字符串满足此条件,而不仅仅是其中的一部分。

这是一个例子:

const pattern = /^([A-Z0-9' ]+)(?:[A-Z0-9])$/i;
['This should work', "This'll also work", "This won't'"].forEach(s => 
  console.log(s, pattern.test(s))
  );

关于javascript - 如何为字母数字、空格和撇号创建正则表达式,然后仅以字母数字结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48525579/

相关文章:

Java:如何确定正则表达式模式匹配失败的原因?

RegEx 确保字符串至少包含一个小写字符、大写字符、数字和符号

javascript - 如何增加表格单元格的值?

javascript - html表格项中的搜索过滤器[表格数组是异构的]

javascript - 碰到 Canvas x 边框时向后移动一个圆圈

javascript - 使用另一个输入值设置 jQuery 值

c++ - 使用 C 样式数组作为 STL 字符串操作的后端

python - NLTK RegEx Chunker 不使用通配符捕获定义的语法模式

需要 javascript 正则表达式,仅括号内的数字,多个

javascript - dojo Web 应用程序身份验证