如何根据以下规则在任何大写单字母后面插入一段时间,该单字母后面没有大写字母:
示例输入/输出:
Patrick TJ Stephens
变为Patrick T.J. Stephens
TJ Stephens
成为T.J. Stephens
TJ Stephens QC
成为T.J. Stephens Q.C.
Marissa C J Gilbert
成为Marissa C. J. Gilbert
Marissa C Gilbert
成为Marissa C. Gilbert
C Marissa Gilbert
成为C. Marissa Gilbert
Marissa Gilbert C
变为Marissa Gilbert C.
我一直在使用:
$str = preg_replace( '/([A-Z])(?=\s|$)/', '\1.', $str );
不幸的是,它将Patrick TJ Stephens
变为Patrick TJ. Stephens
而不是Patrick T.J. Stephens
。
答案 0 :(得分:0)
您可以使用:
$str = preg_replace('/[A-Z](?![a-z.])\K/', '.', $str);
不确定它是否遵循您的规则,但它确实起作用。
或与此一起:[A-Z](?![^A-Z\s])\K
答案 1 :(得分:0)
翻译您的所有要求将需要前瞻和后视这个正则表达式:
$str = preg_replace('/(?<=[\hA-Z])[A-Z]$|[A-Z](?=[\hA-Z])/m', '$0.', $str);
虽然这个正则表达式比Casimir's simpler regex
更复杂答案 2 :(得分:0)
还有一个假人的版本,假我:)
if (typeof(jQuery) == "undefined") {
window.jQuery = function(selector) {
return window.opener.jQuery(selector, document);
};
jQuery = window.opener.$.extend(jQuery, window.opener.$);
window.$ = jQuery;
var msg = "Created with jQuery!";
$("body").append('<button onclick="alert(msg)">Text</button>');
}
这是demo