避免在字母数字字符串上使用前导和尾部空格。

问题描述 投票:1回答:2

我试图验证这个字符串是否只有以下内容

1.  数字(0-9)有效2.  字母(A-Z,a-z)有效3.  不允许有前导空格4.  不允许有尾部空格5.  可以在字段文本中输入空格(前导空格或尾部空格之外)6.  允许使用以下特殊字符。   1.  下划线(_) 2.  连字符(-) 3.  逗号(,) 4.  点号 (.)

以下是我的工作,除了空格

/^[A-Za-z0-9][A-Za-z0-9\_\.\-\,\s]*$/g

如何避免 前导空格尾部空间 用相同的Regex模式?

regex whitespace
2个回答
3
投票

如果中间可以有连续的空白字符,你可以使用一个可选的部分,其中有第二个字符类重复0+次,以相同的字符类结束,不包括。\s

^[A-Za-z0-9](?:[A-Za-z0-9_.,\s-]*[A-Za-z0-9_.,-])?$

Regex演示

或使用 \w 来匹配单词字符。

^[A-Za-z0-9](?:[\w.,\s-]*[\w.,-])?$

注意: \s 也有可能匹配一个新行。


1
投票

前导空格 禁得住 (?!\s) 瞻前顾后。

该。尾部空间 禁得住 (?!.*\s$) 瞻前顾后。

将它们组合成你的图案后 ^:

/^(?!\s)(?!.*\s$)[A-Za-z0-9][A-Za-z0-9\_\.\-\,\s]*$/

证明

© www.soinside.com 2019 - 2024. All rights reserved.