[英]VB.Net Need to check if a string contains only one word but can contain punctuation
我需要检查我的用户是否只在文本框中插入了1个单词。 这个词可以包含标点符号。 以下是可以插入和不插入的示例:
无法插入(多个单词):
可插入(单个单词,句末,句子开头):
我正在努力做我需要做的检查。 我已经有: Regex.Matches(word, "\\S+")
,用于检查插入的单词数。 但是我如何检查是否有标点符号? 因为“.Start”返回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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.