Java Regex-验证字符串是否包含由句点(.)分隔的非空修剪标记



我正在尝试编写一个正则表达式,用于识别字符串是否包含由.分隔的非空标记(经过修剪(,即以下形式。这是我想到的最好的。

Pattern.compile("^(?!\.)(?!.*\.$)(?!.*?\.\.)(?!\p{Space}$)(?!\p{Space}\.)(?!.*\.\p{Space}$)[\p{Graph}\p{Space}]+$", Pattern.UNICODE_CHARACTER_CLASS);

单元测试出现在以下代码中:https://ideone.com/kuej3D

这适用于所有情况。I、 然而,感觉还有更好的方法可以做到这一点。

例如,

如何检查表格格式,

<s1><.s2>*

s1是修剪前导空格和尾随空格后的非空字符串。

.是文字周期

s2是在修剪前导和训练空间之后的非空字符串。

CCD_ 6表示出现次数可以是最小的0和最大的无限。

例如:

alpha$#@.ksj`\c.lijd*3260_+是有效的字符串

a b. c d. e f是有效的字符串

alpha.是无效字符串

.beta是无效字符串

空字符串是无效字符串

是无效字符串

true是无效字符串

上述表意代码中的所有测试用例都应打印.

试试这个正则表达式:

"\s*[^.\s]+\s*(\.\s*[^.\s]+\s*)*"

对于修剪,它匹配每个点的开头、前后和结尾的可选空格。不修剪可能更容易阅读:

"[^.\s]+(\.[^.\s]+)*"

此模式匹配不是点而不是空格的东西,可以选择后面跟多次CCD_14和不是点而非空格的东西。

最新更新