我在正则表达式上遇到了困难。
唯一的要求是,如果单词中有一个点(.),则该点的两侧必须有一个字母。单词中可以有任意数量的点,点之间可以有任意数量的字母。点的两侧必须有一个字母。
我已经大部分弄清楚了,但我遇到了仅由一个字母分隔的点的问题(请参见下面的示例)
目前我有这样的表达:
^(\s*[0-9A-Za-z]{1,}[.]{0,1}[0-9A-Za-z]{1,}\s*)+$
Run Code Online (Sandbox Code Playgroud)
这适用于以下情况:
但是,如果点仅由一个字母分隔,则这不适用于单词,如下所示:
有人知道我该如何解决这个问题吗?
编辑:
下面的 BHustus 解决方案是更好的解决方案。
然而,我确实采用了 BHustus 所展示的内容,并将其与我之前的内容相结合,想出了一个不那么“令人困惑”的模式,以防其他人感兴趣。
^(\s*[\d\w]+([.]?[\d\w]+)+\s*)+$
Run Code Online (Sandbox Code Playgroud)
关键是要有 . 后面的 1 个单词在自己的组中并重复。([.]?[\d\w]+)+
谢谢。