3

我想尝试构建一个 RegEx 语句,该语句将从字符串中删除任何前置或尾随空格(但保留字符串中包含的任何空格),同时匹配所选格式。例如,字符串不能超过 20 个字符,可以包含 a-zA-Z0-9 中的任何字符以及下划线和连字符。但最重要的是,它必须修剪或忽略在字符串开头或结尾发现的任何空格,因此:

正确:“祝你有美好的一天”

错误:“祝你有美好的一天”

我已经尝试了许多不同的方法来做到这一点,但不幸的是,到目前为止,我还没有想出一个完全符合我想要的公式。任何人都可以帮助我使用合适的正则表达式吗?(这是最简单形式的正则表达式,而不是特定于平台的)。

4

5 回答 5

4

搜索此模式:

^\s*(.*?)\s*$

替换为这个:

\1
于 2013-01-25T09:03:06.917 回答
0

从你的例子看来,字符串中间也允许有空格,所以试试这个

^((([a-zA-Z0-9\-_][a-zA-Z0-9\-_ ]{0,18}?[a-zA-Z0-9\-_]))|([a-zA-Z0-9\-_]))$

任何匹配的都是正确的。

模式中的or部分用于支持单个字符的句子。

于 2013-01-25T08:48:41.007 回答
0

这应该适合您的需求:

^\S[\w\s-]{0,18}\S$

18maxlength - 2字符串的,因为这两个\S将匹配任何非空白字符。例如在这种情况下,如果字符串的长度大于20字符,则字符串将不匹配。此外,如果字符串的长度小于2字符,则字符串将不匹配,因为上述约束相同。

于 2013-01-25T08:56:02.423 回答
0

使用这个正则表达式^\S((.{0,18}\S)|)$

^字符串开头

\S非空格符号

(.{0,18}\S)?末尾的任何符号和非空格符号(0-19 个符号)

|或者

$字符串结尾

于 2013-01-25T08:57:39.943 回答
0

这是一个使用 sed 的示例

echo "  Have a nice day  "|sed -E "s/^ *([^ ]+.*[^ ]+) +$/\\1/"
于 2017-05-11T23:19:32.577 回答