선행 점이있는 JavaScript 문자열이 있습니다. 나는 자바 스크립트 바꾸기 기능을 사용하여 선행 점을 제거하고 싶다. 다음 코드를 시도했다.선행 점을 제거하는 Javascript 함수
var a = '.2.98»';
document.write(a.replace('/^(\.+)(.+)/',"$2"));
그러나 이것은 작동하지 않습니다. 어떤 아이디어?
선행 점이있는 JavaScript 문자열이 있습니다. 나는 자바 스크립트 바꾸기 기능을 사용하여 선행 점을 제거하고 싶다. 다음 코드를 시도했다.선행 점을 제거하는 Javascript 함수
var a = '.2.98»';
document.write(a.replace('/^(\.+)(.+)/',"$2"));
그러나 이것은 작동하지 않습니다. 어떤 아이디어?
다음은 그대로 문자열의 나머지를 떠나 빈 문자열로 문자열의 시작 부분에있는 점을 대체 : 당신이 필요하지 않은 경우
a.replace(/^\./, "")
정규식이 잘못되었습니다.
var a = '.2.98»';
document.write(a.replace('/^\.(.+)/',"$1"));
당신은 선행 점에
(.+)
일치하도록했지만, 그 대신
\.
을 원 작동하지 않습니다.
이 정규 표현식에하지 마십시오.
간단한 charAt()
및 substring()
또는 substr()
은 (이 경우에만 charAt(0)
.
이다) 충분할 것이다.
자료 :
문자열에 점이없는 경우가 있습니다. 그게 내가 정규식을 사용하는 이유. –
그래서 charAt()를 사용하여 점이 있는지 없는지 확인해야합니다. 거기에 정규식 엔진을 사용할 필요가 전혀 없습니다. –
감사합니다. 콜린. 나는 이해했다. –
간단하게 :
if (a.charAt(0)=='.') {
document.write(a.substr(1));
} else {
document.write(a);
}
'indexOf'를 할 필요가 없습니다. 'indexOf'를 사용하면 점을 얻을 때까지 모든 문자를 볼 수 있지만, 결국에는 첫 번째 문자에만 관심이 있습니다. –
콜린, 고마워 - 고쳤다. – naivists
Nikita 덕분에 솔루션이 완벽하게 작동했습니다. –
다른 의견에서 말했듯이 이것은 전혀 좋은 생각이 아닙니다. 정규 표현식이 필요하지 않습니다. 느리고 비효율적입니다. –
@ColinHebert 그런 미세한 최적화는 조건부 가치가있는 것은 아닙니다. document.write는 실제 작업의 99 %가 어쨌든 여기에서 수행됩니다. – Esailija