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

时间:2015-05-07 09:21:05

标签: regex vb.net words

我需要检查我的用户是否只在文本框中插入了1个单词。 这个词可以包含标点符号。以下是一些可以插入和不插入的示例:

无法插入(多个单词):

  • “你好那里”

可以插入(单个单词,句子结尾,句子开头):

  • “字”
  • “结束。”
  • “。开始”
  • “!!它”
  • “结束!!”

我正在努力做我需要做的检查。我已经有了: Regex.Matches(word, "\S+") 它会检查插入的单词数。但是我如何检查是否有标点符号?因为“.Start”返回2个单词,但这是有效的。

由于

2 个答案:

答案 0 :(得分:2)

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

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

请参阅demoanother demo on regexstorm(我必须添加\r?以显示该网站上多行标记的所有匹配项。)

要排除单词中包含标点符号的情况(例如new!word),请使用

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

但是这将禁止使用连字符。

请参阅demo 2

答案 1 :(得分:1)

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

^开始 \W*仅允许从0到无限次的非单词字符 \w+仅允许从1到无限次的单词字符
|要交替 $结束