我正在使用NestJs,在使用以下正则表达式时遇到了一些问题。我需要匹配以单词开头的字母数字字符串,并允许一些字符-
,_
,'
@Matches(RegExp(/[\w'\-_]/), {
message: 'provide a valid name',
})
name: string;
字符串
这允许在不允许的情况下传递URL等文本。
我也试过
@Matches(RegExp(/^[\w'\-_]$/), {
message: 'provide a valid name',
})
name: string;
型
添加^
、$
以匹配精确的字符串,在NestJs控制台输出中生成/^[\\w'-]$/
预期通过foo
foo_
foo-
foo'
预期失败https://google.com
-foo
_foo
'foo
$foo
1条答案
按热度按时间baubqpgj1#
This regex
^[A-Za-z]+[A-Za-z-_']+$
符合您指定的条件。(我已经根据你所说的应该通过和失败的内容向正则表达式中添加了单元测试)本质上它做以下事情
\w
,因为它包含0-9和_
)-
、_
、'
)匹配这应该不允许任何URL,因为它将包含
.
,:
或//
。它应该禁止任何以'
,_
,-
,$
或任何其他符号开头的单词,因为它不符合A-Za-z
条件。我发现
regex101.com
是学习、测试和可视化正则表达式的一个很好的资源。也许对你也有帮助