4

我想允许字母数字字符和句点;但是,该短语不能连续包含两个或多个句点,不能以句点开头或结尾,并且不允许使用空格。

我同时使用 PHP 和 Javascript。

到目前为止,我有/^(?!.*\.{2})[a-zA-Z0-9.]+$/

这适用于允许字母数字字符和句点,同时拒绝空格和连续句点,但我仍然不确定如何检查开始和/或结束句点。我该怎么做?而且,有没有更好的方法来做我已经拥有的?

4

3 回答 3

3

它几乎总是有助于绘制一个有限状态机来概念化您的正则表达式应该是什么样子。

^(?:\w\.?)*\w$
于 2013-01-03T16:32:16.077 回答
1

这是一种可能的方法

/^(?!\.)((?:[a-z\d]|(?<!\.)\.)+)(?<!\.)$/i

有关更多解释和测试,请参见此处:http ://www.regex101.com/r/rZ6yH4

编辑:根据泰勒的解决方案,这是他的方式,缩短并简化为字母和数字

/^(?:[a-z\d]+(?:\.(?!$))?)+$/i

( http://www.regex101.com/r/dL5aG0 )

于 2013-01-03T16:32:00.263 回答
0

一个开始是:

/^[^. ](?!.*\.{2})[a-zA-Z0-9.]+[^. ]$/

但应该仔细测试。

于 2013-01-03T16:23:12.923 回答