我需要检查我的用户在文本框中仅插入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