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
- 공백이 아닌 숯불.