首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在JavaScript中大写首字母句号、问号和感叹号?

如何在JavaScript中大写首字母句号、问号和感叹号?
EN

Stack Overflow用户
提问于 2016-10-07 13:54:17
回答 2查看 3.5K关注 0票数 1

我有一个文本区,我希望每个句子中的第一个字母都是大写的。

现在我有了这个:

代码语言:javascript
运行
复制
evt.target.value = evt.target.value.replace(/.+?[\.\?\!](\s|$)/g, function(a) {
    return a.charAt(0).toUpperCase() + a.slice(1);
});

这是af函数,其中evt.target是textarea,函数在keyup上调用。

它工作得很好,只是它不会立即资本化。如果我写:

嘿。我需要一些正则表达式。

只有当我在"this“结尾加上一个句号时,"I”才会资本化。如果". >whitespace<“或"!>whitespace<”或"?>whitespace<“后面出现,我希望它在输入后立即大写"I”。

我试过搜索很多东西,但不幸的是,这个正则表达式对我来说太复杂了。有人能用快速的解释把这个写得正确吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-07 14:49:00

我迟到了,但也许有人需要jQuery代码。这也适用于第一句。

代码语言:javascript
运行
复制
$('input').on('input', function (evt) {
    var $this = $(evt.target),
        re = /(^|[.!?]\s+)([a-z])/g,
        val = $this.val().replace(re, function (m, $1, $2) {
            return $1 + $2.toUpperCase();
        });
    $this.val(val);
});

https://jsfiddle.net/chukanov/oqg5o88u/1/

es6更新:

代码语言:javascript
运行
复制
let re = /(^|[.!?]\s+)([a-z])/g;
$('input').on('input', function (evt) {
  let $this = $(this),
      val = $this.val().replace(re, (m, $1, $2) => $1 + $2.toUpperCase());
  $this.val(val);
});

https://jsfiddle.net/chukanov/oqg5o88u/27/

票数 7
EN

Stack Overflow用户

发布于 2016-10-07 14:07:31

我建议使用/([!?.]\s+)([a-z])/g regex,并将匹配传递给替换回调函数,仅将匹配传递到第二个捕获组的上部:

代码语言:javascript
运行
复制
let log  = document.querySelector('#log'),
    test = document.querySelector('#test');

test.addEventListener('input', e => {
    log.innerHTML = e.target.value.replace(/([!?.]\s+)([a-z])/g, function(m, $1, $2) {
        return $1+$2.toUpperCase();
    });
});
代码语言:javascript
运行
复制
<input type='text' id='test' autofocus /><br />
<span id='log'></span>

图案细节

  • ([!?.]\s+) --第1组捕获一个!?.以及1个或更多的空白空间(请注意,使用*替换+时,将允许零或多个空白)
  • ([a-z]) -第2组捕获小写ASCII字母。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39918994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档