【发布时间】:2016-12-20 10:24:41
【问题描述】:
构建将拒绝未修剪的输入字符串的表达式。
有一组列入白名单的符号,包括 空格。但它不能用于第一个或最后一个位置。但是,它可以在任意数量的任何前导和修剪白名单符号之间使用。
有如下表达式:
^[^\s][A-Za-z0-9\s]*[^\s]$
... 但它不起作用有几个原因,至少它仍然在前导和尾随位置匹配任何非空白符号,即使它没有被列入白名单。而且,即使匹配到表达式,也不会匹配单个字母的单词。
白名单是 A-Z、a-z、0-9、空格。
有效案例:
Abc132 3sdfas // everything ok
无效案例#1:
asd dsadas // leading\trailing space is exist
无效案例#2:
$das dsfds // not whitelisted symbol at the leading\trailing position
那么,如果空白符号不是前导符号或尾随符号,如何将其添加到白名单中?
【问题讨论】:
-
你能举出一些valid和invalid两种情况的例子吗?
-
尝试使用 \\s 如果有帮助,请告诉我,我遇到了同样的问题,这就是我所缺少的
-
@MaskedMan,是的,看看
-
^[A-Za-z0-9]+(?:\s+[A-Za-z0-9]+)*$ -
^[A-Za-z0-9]+.*[A-Za-z0-9]+$: 第一个字符应该是alphanumeric并且至少出现一次,最后一个字符也应该相同,介于两者之间。 解决问题了吗?
标签: regex string language-agnostic