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

时间:2018-01-30 15:56:09

标签: javascript regex

我试图根据一些限制创建一个正则表达式,并且我已经使用了一些有用的资源来尝试&测试一下。我知道我需要一个锚($)来检查字符串的结尾,但我想我误解了应该放置锚的位置。

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

1 个答案:

答案 0 :(得分:1)

你所拥有的基本上是说"给我一个字母数字,撇号或空格,而不是任何数量的单词"。它也可以在任何地方,因此您的字符串也可以包含其他字符。根据您的描述,这可能不是您想要的。

我想你可能想要这个:

/^([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))
  );