별표 (*)로 마지막 단어를 교체하거나 두 단어를 마지막으로

wilmerlpr :

나는 사람의 숨기기 성해야합니다. 이름에 세 단어를 가진 사람의 경우, 단지 마지막 단어, EJ을 숨길 수 :

Laura Torres Bermudez

수 갈까요

Laura Torres ********

그리고

Maria Fernanda Gonzales Lopez

해야한다

Maria Fernanda ******** *****

나는 단어의 수에 따라, 정규식을 적용 할 때문에 두 정규식 생각합니다.

나는 알고있다 \w+을 대체에게 하나의 별표 (*) 모든 단어와 함께 (?!\s).내가 공간을 제외하고 문자를 대체 할 수 있습니다. 나는 당신이 날 도울 수 있기를 바랍니다. 감사.

이것은 나의 예입니다 https://regex101.com/r/yW4aZ3/942

Wiktor Stribiżav :

자바 스크립트 솔루션 2018 확장 정규식 기능 ECMA 스크립트에 의존하지 않는 것입니다

s = s.replace(/^(\S+\s+\S+)([\s\S]*)/, function($0, $1, $2) {return $1 + $2.replace(/\S/g, '*');})

세부:

  • ^ - 문자열의 시작
  • (\S+\s+\S+) - 그룹 1 : 하나 이상의 비 - 공백, 하나 이상의 공백 후 1 이상의 비 - 공백
  • ([\s\S]*) - 그룹 2 : 어떤 하나 개 이상의 문자.

대체 그룹 1 개 컨텐츠와 별표로 대체 각각의 비 공백 문자와 그룹 2의 내용이다.

자바 솔루션 :

s = s.replaceAll("(\\G(?!^)\\s*|^\\S+\\s+\\S+\\s+)\\S", "$1*");

참고 항목 정규식 데모

세부

  • (\G(?!^)\s*|^\S+\s+\S+\s+)- 그룹 1 : 중 다음 이전 경기 (끝 \G(?!^))와 0 개 이상의 공백 또는 ( |문자열의 시작에서) 1 + 비 공백 1+ 공백 다시 1+ 비 공백, 1+ 공백을
  • \S - 공백이 아닌 숯불.

추천

출처http://43.154.161.224:23101/article/api/json?id=313794&siteId=1