VB.NET需要检查字符串是否仅包含一个单词,但可以包含标点符号



我需要检查我的用户在文本框中仅插入1个字。这个词可以包含标点符号。以下是可以插入什么和不能插入的示例:

无法插入(多个单词):

  • "你好"

可以插入(单词,句子的结尾,句子的开始):

  • " word"
  • "结束。"
  • "。开始"
  • " !!"
  • "结束!"

我在为需要做什么检查而苦苦挣扎。我已经有了: Regex.Matches(word, "S+")哪个检查插入了多少个单词。但是如何检查是否有标点符号?因为"。开始"返回2个单词,但这是有效的。

谢谢

您可以使用p{L}类允许字母,然后p{P}允许标点符号,并使用锚来标记字符串的启动和结尾。可选组将确保我们在两端捕获标点符号:

^(?:p{P}+s*)*[p{P}p{L}]+(?:s*p{P}+)*$

请参阅RegexStorm上的演示和另一个演示(在其中我必须添加r?才能在该站点上显示所有匹配项)。

排除单词内部标点符号(例如new!word)的情况,请使用

^(?:p{P}+s*)*p{L}+(?:s*p{P}+)*$

这将禁止连字词。

请参阅演示2

^((W*w+)|(w+W*))$

^开始
W*仅允许从0到无限时间的非单词字符
w+仅允许单词字符从1到无限时间
|替代
$ end

最新更新